Ігровий майданчик Xcode застрягає на "Запуск майданчика" або "Запуск тренажера" і не запустить код, що робити?


144

Кожен раз, коли я створюю новий ігровий майданчик для тестування якогось коду, Xcode застрягає і не запускає код. Він просто представляє у верхній частині екрана вислів "Запуск майданчика" або "Запуск тренажера" з піктограмою завантаження, яка, обіцяючи, крутиться поруч, але нічого не відбувається. Іноді це триває нескінченно, а іноді Xcode зупиняється та друкує це для консолі:

Playground execution failed: error: Couldn't lookup symbols:
__swift_FORCE_LOAD_$_swiftCoreImage 
__swift_FORCE_LOAD_$_swiftFoundation 
_playground_log_hidden 
_playground_logger_initialize 
_playground_log_postprint 

thread #1: tid = 0xc0cd0, 0x000000010ea7c3c0 MyPlayground`executePlayground, queue = 'com.apple.main-thread', stop reason = breakpoint 1.2

frame #0: 0x000000010ea7c3c0 MyPlayground`executePlayground
frame #1: 0x000000010ea7b9c0 MyPlayground`__37-[XCPAppDelegate enqueueRunLoopBlock]_block_invoke + 32 
frame #2: 0x000000010f59625c CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
frame #3: 0x000000010f57b304 CoreFoundation`__CFRunLoopDoBlocks + 356
frame #4: 0x000000010f57aa75 CoreFoundation`__CFRunLoopRun + 901
frame #5: 0x000000010f57a494 CoreFoundation`CFRunLoopRunSpecific + 420
frame #6: 0x0000000114985a6f GraphicsServices`GSEventRunModal + 161
frame #7: 0x0000000110124f34 UIKit`UIApplicationMain + 159
frame #8: 0x000000010ea7b6e9 MyPlayground`main + 201
frame #9: 0x0000000112ad268d libdyld.dylib`start + 1
frame #10: 0x0000000112ad268d libdyld.dylib`start + 1

Я працюю Xcode 8.0 (8A218a) на macOS Sierra 10.12.

Обладнання :
MacBook Pro (13 "середина 2012 року)
2,5 ГГц Intel Core i5
4 ГБ 1600 МГц Рам DDR3

Я озирнувся, але принаймні жодна з цих тем не дала відповіді:
https://forums.developer.apple.com/thread/5902
https://github.com/jas/playground/isissue/9

Речі, які я вже намагався з нульовим успіхом:

  • Перезапуск Xcode
  • Перевстановлення Xcode (знижено до 7,3, але, оскільки це не допомогло, я оновив назад до 8,0)
  • Перезапуск машини
  • Створення нового ігрового майданчика

Чи є у вас ідеї, як вирішити цю проблему? Я новачок у програмуванні та охоче намагаюся навчитися Swift, але Xcode робить це практично неможливим ...

Заздалегідь дякую, ура.


Дякую за швидку відповідь. Я використовую ігровий майданчик просто тому, що в мене фактично є активна підписка на Treehouse.com, і вони заохочують використовувати майданчик для тестування нових концепцій.
Еміль Освальд

1
Я розумію, але моя думка полягає в тому, що ви "охоче намагаєтеся навчитися Свіфту" і зараз ви застрягли. Якщо ви можете зробити новий проект програми та запустити його, можете продовжити. Тепер, якщо ви також не можете запустити проект програми, у вас є більш глибокі проблеми. :)
мат

Це, безумовно, правда. Дякую за ваш вхідний мат, я буду робити так, як ви запропонували, доки немає кращого рішення. Я все одно продовжуватиму цю тему активною, якщо хтось знайшов рішення.
Еміль Освальд

2
Я не маю жодної ради тут давати, @EmilOsvald. Я можу повідомити, що це трапляється часто і на моєму MacBook (і траплялося постійно, коли я також використовував iMacs, всі нові машини з останніми оновленнями). Ви не повинні почувати себе винуватими у бажанні використовувати дитячі майданчики. Теоретично вони - чудовий продукт, і коли вони працюють, вони є.
Іліас Карім

1
Перед першим коментарем не повинно бути пробілів (якщо перший текст тексту є коментарем), а також порожнім рядком як першого рядка. Дай мені знати.
Даніель Спрінгер

Відповіді:


191

Відповідь Перехід на платформу macOS

Коли ви створюєте ігровий майданчик, за замовчуванням вибираєте платформу iOS і автоматично імпортуєте UIKit. Це UIKit, який весь час руйнується і застрягає . Якщо ваш (практичний) код не використовує UIKit, ви можете перейти на платформу MacOS . Оскільки основна (не точна, хоча) різниця між iOS та macOS полягає в APPKit та UIKit.

У верхньому правому куті вашого ігрового майданчика Xcode натисніть на показати / приховати утиліти -> інспектор файлів -> налаштування ігрового майданчика -> платформа -> macOS

Дивіться екранShot нижче: введіть тут опис зображення


4
Це, здавалося, працює для мене разом із встановленням кнопки виконання майданчика для виконання майданчика вручну. Чи вони коли-небудь це виправлять, це просто здається трішки
hoboBob

2
Спасибі, це добре працює при використанні Foundation, саме того, що мені було потрібно. Я не можу повірити, що на Ігрових майданчиках є стільки помилок ...
Адрієн Івон

15
Смішно. 3 рядки коду (жоден з яких не імпортує UIKit), і я мушу це гугл. Дуже багато людей просто відмовилися і оголосили Свіфта марним.
Джеймс Бедфорд

4
Це не працює для мене. Я використовую Xcode 9.4.1 (не бета-версію), і мені доводиться постійно перезавантажувати Xcode. Досить кульгавий ...
Майкл Роджерс

1
Крім того, якщо дитячий майданчик стає досить великим, Cmd + Shift + Enter припиняє роботу. Хто, до біса, програмував це лайно? Діти, які використовують ігрові майданчики на iPad?
Robo Robok

70

Я спробував наступне, і це спрацювало на мене:

  1. натисніть на нижню кнопку "зупинити майданчик"
  2. видаліть перший рядок коментаря та зробіть заяву про імпорт першим рядком. немає місця над імпортом.
  3. натисніть кнопку виконання

1
Я виявив, що перед коментарем також не повинно бути місця, але ви можете мати коментар як перший рядок. Просто жоден порожній рядок перед ним, ні відступ перед ним, на його рядку.
Даніель Спрінгер

3
Я додам до цього необхідність перезапустити Xcode. Здається, це працює для мене.
jeb_is_a_mess

26
Працювали для мене. Я не можу повірити, наскільки смішна ця помилка. Apple має соромитися.
gangelo

1
перезапуск xcode було єдиним, що працювало для мене
Джордж Філіппакос

1
Дивовижно. Я спробував вийти з xcode, очистити отримані дані тощо, але нічого не вийшло, окрім цього. Хоча я вже мав імпорт на першому рядку!
Шівам Pokhriyal

58

У моєму випадку Xcode 8.3.2, він працює, коли я намагаюся виконати наступні кроки:

  1. Файл -> Закрити "Name.playground"
  2. Файл -> Закрити майданчик
  3. Закрити Xcode
  4. Повторно відкрийте Xcode

2
Пропонуючи щось, крім мене, хтось із сучасних XCode має уявлення про першопричину цього збою? Це виявляється найкращою неінвазивною роботою, однак я б не вважав, що вирішує проблему, що вирішує проблему. Чи дійсно коментарі до заголовка ігрової площадки дійсно беруть участь у проблемі? І що Apple говорить про причину?
truedat101

Це працювало для мене разом з видаленням порожнього рядка перед моєю заявою про друк.
FromTheStix

2
Уг, який хитрий спосіб вирішити проблему IDE.
PruitIgoe

Домовились, це супер кульгаво.
Іліас Карим

51

Основний процес Buggy Simulator все ще працює навіть після закриття Xcode. Тож ось кроки:

  1. Вийти з Xcode;
  2. com.apple.CoreSimulator.CoreSimulatorServiceПроцес вбивства у "Моніторі діяльності";
  3. Запустіть Xcode та запустіть свій ігровий майданчик.

1
Мені подобається ця відповідь більше, ніж інші відповіді, тому що вона більше
ремесло

1
Чи потрібно мені це робити щоразу?
Саран

20

На мій досвід, ви повинні:

  1. Не допускайте оновлення ігрового майданчика Swift, утримуючи: ► стрілку в нижній лівій частині ігрового майданчика та вибравши "Ручний запуск"
  2. Закрити Xcode
  3. Перезавантажте Xcode

Це працює дуже добре.


4
Але чи не вся суть Playground в тому, щоб запустити свій код так, як написано?
saphryn

16

Я скасував коментар у першому рядку. Це вирішило для мене. Переконайтеся, що спробуйте після закриття та повторного перезапуску Xcode та примусово вийдіть із com.apple.coresimulator з Монітора активності


1
На XCode 8.2.1 це працювало для мене. Щойно я видалив коментар першого рядка про дитячі майданчики, він швидко пробіг. Мені не довелося змушувати кинути тренажер.
jessi

Завдяки відповіді @Fiveagle Мені довелося змусити qui процес коресимулятора, видалити перші рядки, щоб "імпортувати UIKit" - це перший рядок. І перезапуск XCode зробив хитрощі, але для першої компіляції знадобився певний час.
yves Baumes

13

Додавання імпорту PlaygroundSupport вирішило проблему для мене :)


2
Цікаво. Звідки ти це взяв?
Даніель Спрінгер

Якби це було настільки ефективно, як ви говорите, ви б подумали, що у розробників за замовчуванням буде включено це. Я буду експериментувати з цим. Дякую!
saphryn

6

Ви можете перейти на ручну обробку. Це працювало для мене. скріншот


3

Переконайтеся, що ви вбили xcode в моніторі активності, перш ніж врешті-решт вбити процес com.apple.CoreSimulator.CoreSimulatorService у моніторі активності. Я кілька разів намагався вбити процес, і я зрозумів, що xcode все ще працює у фоновій діяльності, тоді процес com.apple.CoreSimulator.CoreSimulatorService знову з’явиться, навіть коли ви його просто вбили.


2

У мене була та сама проблема, що я робив - це відкрити редактор Assistance, і зі мною все працює добре, навіть коли я закрив редактор Assistance! Не запитуйте, чому це було пробним і помилковим. Сподіваюся, що це вам допоможе


Це насправді чудова ідея. Оскільки кнопка відтворення / зупинки не збуджує процес і не вимагає оновлення, я думаю, ви можете подумати про включення та вимкнення помічника редактора як заміну для кнопки відтворення на халоп. Дивовижно :)).
saphryn

0

після запуску деякий час ви побачите повідомлення про помилку, тоді ви перейдете до перегляду> область налагодження> активувати консоль, а потім знову зіграти для мене


1
Що таке час? 5 хвилин? День?
Даніель Спрінгер

з 5 до 15 хв, можливо, через кілька тижнів цієї проблеми я змінив SSD і перейшов на пам'ять 16 Гб оперативної пам’яті та її вирішив, як зміна дня і ночі
CrtlBreak

0

Перевірте план iCloud для зберігання!

Якщо у вас є, він постійно синхронізує весь комп’ютер, що включає папки на робочому столі та документах. Натомість спробуйте створити папку "Локальні файли" у своїй домашній папці (команда + shift + h) і зберігайте там свої проекти Playground, де вона не синхронізується з iCloud.

Це працювало для мене. Я сподіваюся, що це працює і для вас! :)


Це насправді спрацювало для мене. Усі, хто має цю проблему, дійсно повинні її спробувати.
Пітер Шорн


0

У моєму випадку проблема викликана користувачем. У мене був показаний помічник редактора, але перегляд у прямому ефірі не вибрано. Переконайтесь, що це виглядає так:

LiveView

І не так:

введіть тут опис зображення


0

Також трапляється, як у моєму випадку, коли ви визначили функцію, але забули її назвати?


0

Як би на це запитання не було достатньо відповідей, я запропоную своє "рішення" проблеми, що застрягла в Swift ігрових майданчиках:

Одне рішення, на яке я натрапив, добре працює для мене (тому мені не доведеться перезавантажувати Xcode):

killall launchd_sim

Це призведе до того, що спінінг "Запуск майданчика ..." піде, і ви можете викликати нове виконання. Будьте в курсі: наступне виконання буде закручене, launchd_simі всі ці дочірні процеси знову будуть оброблені. Напевно, було б найкраще вбити лише відповідний дочірній процес. Але я цього не знайшов.

Але я роблю це лише тоді, коли паралельно не використовую симулятори iOS, оскільки launchd_simпроцес є дочірнім процесом Simulator.


0

Я видалив отримані дані та очистив папку збірки. Це працює для мене. Я стикався з Xcode 11.2.1 і Xcode 10.1 на одній машині.


-1

Я стикався з тією ж проблемою, але після гуглінгу та експериментів трохи з’ясував, що завжди потрібно import UIKitперед тим, як імпортувати будь-які інші мочки.


-1

По-перше, видаліть вбудований рядок коментарів.

Тоді, навіть якщо ви знову помістите коментар першого рядка, він все ще працює. введіть тут опис зображення


-1

Остання остання порада, яка працює для мене: Переконайтеся, що не працює запускаючий симулятор iOS. Вони конфліктують між собою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.