Za każdym razem, gdy tworzę nowy plac zabaw w celu przetestowania kodu, Xcode utknie i nie uruchomi kodu. Po prostu przedstawia komunikat „Uruchomiony plac zabaw” lub „Uruchomienie symulatora” u góry ekranu z obiecująco obracającą się obok niego ikoną ładowania, ale nic się nie dzieje. Czasami trwa to w nieskończoność, a czasami Xcode zatrzymuje się i wyświetla to na konsoli:
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
Używam Xcode 8.0 (8A218a) na macOS Sierra 10.12.
Sprzęt :
MacBook Pro (13 ", połowa 2012 r.)
2,5 GHz Intel Core i5
4 GB 1600 MHz RAM DDR3
Rozejrzałem się, ale przynajmniej żaden z tych wątków nie dostarczył odpowiedzi:
https://forums.developer.apple.com/thread/5902
https://github.com/jas/playground/issues/9
Rzeczy, które już wypróbowałem bez powodzenia:
- Ponowne uruchamianie Xcode
- Ponowna instalacja Xcode (obniżona do wersji 7.3, ale ponieważ to nie pomogło, powróciłem do wersji 8.0)
- Restartowanie maszyny
- Tworzenie nowego placu zabaw
Masz jakieś pomysły, jak rozwiązać ten problem? Jestem nowy w programowaniu i chętnie próbuję nauczyć się Swift, ale Xcode sprawia, że jest to praktycznie niemożliwe ...
Z góry dziękuję, pozdrawiam.
Odpowiedzi:
Ans. Przejdź na platformę macOS
Podczas tworzenia Playground domyślnie wybiera platformę iOS i automatycznie importuje UIKit. To UIKit, który ciągle się zawiesza i blokuje . Jeśli Twój (ćwiczeniowy) kod nie korzysta z UIKit, możesz przejść na platformę MacOS . Jako główną (choć nie dokładna) różnicy między iOS i MacOS jest zestaw klas AppKit i UIKit.
W prawym górnym rogu Xcode Playground kliknij Pokaż / ukryj Narzędzia -> Inspektor plików -> Ustawienia placu zabaw -> Platforma -> macOS
Zobacz zrzut ekranu poniżej:
źródło
Wypróbowałem następujące i zadziałało:
źródło
W moim przypadku Xcode 8.3.2 działa, gdy próbuję wykonać poniższe czynności:
źródło
Główny proces Buggy Simulator nadal działa nawet po zamknięciu Xcode. Oto kroki:
com.apple.CoreSimulator.CoreSimulatorService
proces w Monitorze aktywności;źródło
Z mojego doświadczenia wynika, że powinieneś:
Pracuje bardzo dobrze.
źródło
Anulowałem komentarz do pierwszego wiersza. To rozwiązało dla mnie. Wypróbuj go po zamknięciu i ponownym uruchomieniu Xcode i wymuś zamknięcie com.apple.coresimulator z Monitora aktywności
źródło
Dodanie importu PlaygroundSupport rozwiązało problem za mnie :)
źródło
Możesz przejść do przetwarzania ręcznego. U mnie to zadziałało.
źródło
Upewnij się, że zabiłeś xcode w monitorze aktywności, zanim ostatecznie zabijesz proces com.apple.CoreSimulator.CoreSimulatorService w monitorze aktywności. Próbowałem kilkakrotnie zabić ten proces i zdałem sobie sprawę, że jeśli xcode nadal działa w tle, to proces com.apple.CoreSimulator.CoreSimulatorService wyskakuje ponownie, nawet gdy właśnie go zabiłeś.
źródło
Miałem ten sam problem, jedyne, co zrobiłem, to otworzyłem edytor pomocy i wszystko działa dobrze, nawet gdy zamknąłem edytor pomocy! Nie pytaj, dlaczego to była metoda prób i błędów. Mam nadzieję, że to ci pomoże
źródło
po jakimś uruchomieniu zobaczysz komunikat o błędzie a następnie przejdziesz do widoku> obszar debugowania> aktywuj konsolę i znowu graj mi zadziałało
źródło
Sprawdź plan przestrzeni dyskowej iCloud!
Jeśli go masz, stale synchronizuje cały komputer, w tym foldery Pulpit i Dokumenty. Zamiast tego spróbuj utworzyć folder „Pliki lokalne” w swoim folderze domowym (polecenie + shift + h) i zachowaj tam projekty Playground, gdzie nie są one synchronizowane z iCloud.
U mnie to zadziałało, mam nadzieję, że u Ciebie też! :)
źródło
Używam Xcode 10.2 i mam ten sam problem. Więc ogólnie po prostu użyj Online Swift Playground
To służy moim celom! :-)
źródło
W moim przypadku problem był spowodowany przez użytkownika. Wyświetlony został asystent edytora, ale podgląd na żywo nie został wybrany. Upewnij się, że wygląda to tak:
A nie tak:
źródło
Zdarza się też, jak w moim przypadku, kiedy zdefiniowałeś funkcję, ale zapomniałeś jej wywołać?
źródło
Jakby na to pytanie nie było wystarczającej odpowiedzi, przedstawię moje „rozwiązanie” problemu zablokowanego w Swift placu zabaw:
Jedyne rozwiązanie, na które się natknąłem, które dobrze mi działa (więc nie muszę ponownie uruchamiać Xcode):
Spowoduje to zniknięcie obracającego się „Running Playground…” i rozpoczęcie nowego wykonania. Bądź świadomy: następne wykonanie przyspieszy
launchd_sim
i znowu wszystkie te procesy potomne. Prawdopodobnie najlepiej byłoby zabić tylko odpowiedni proces potomny. Ale do tej pory tego nie znalazłem.Ale robię to tylko wtedy, gdy nie używam równolegle symulatorów iOS, ponieważ
launchd_sim
proces jest procesem potomnymSimulator
.źródło
Usunąłem dane pochodne i wyczyściłem folder kompilacji. To działa dla mnie. Miałem do czynienia z Xcode 11.2.1 i Xcode 10.1 na tym samym komputerze.
źródło
Miałem ten sam problem, ale po wygooglowaniu i trochę poeksperymentowaniu odkryłem, że zawsze należy
import UIKit
przed zaimportowaniem jakichkolwiek innych bibliotek.źródło
Po pierwsze, usuń wbudowaną linię komentarza.
Następnie, nawet jeśli ponownie umieścisz komentarz w pierwszym wierszu, nadal działa.
źródło
Ostatnia wskazówka, która mi pasuje: upewnij się, że nie jest uruchomiony żaden symulator iOS. Kolidują ze sobą.
źródło