Powyższe odpowiedzi okazały się bardzo przydatne, zwłaszcza odpowiedź Nicka Lockwooda.
Właśnie zmieniłem nazwy kilku folderów w Xcode 8 i napotkałem jeszcze dwa problemy: A) „brak błędów kopii roboczej”
B) awarie danych podstawowych .
Jak rozwiązać te dwa problemy:
A) „ Brak błędów kopii roboczej ”
Poniższa odpowiedź jest bardzo przydatna: Uaktualnienie Swift 3 / Xcode 8 - setki plików DerivedData brakuje w błędach kopii roboczej
Zasadniczo Xcode 8 ma rygorystyczną kontrolę źródła, co może prowadzić do powyższych błędów. Musisz:
- Wyczyść dane pochodne Xcode.
- Przejdź do kontroli źródła i kliknij Odśwież stan.
- Przejdź do kontroli źródła i kliknij Zatwierdź; podczas zatwierdzania zaznacz wszystkie pliki na lewym pasku bocznym menu zatwierdzania (kliknij prawym przyciskiem myszy -> Zaznacz wszystko).
- Prawdopodobnie pojawi się błąd.
- Zamknij menu Commit.
- Odśwież stan.
- Zamknij projekt, zamykając Xcode.
- Ponownie otwórz projekt, odśwież status, zatwierdź ponownie.
- Tym razem zatwierdzenie powinno działać.
- Kliknij Projekt -> Wyczyść.
Zakładam, że masz już włączoną kontrolę źródła. Jeśli nie, lub jeśli utkniesz, postępując zgodnie z moimi instrukcjami, po prostu postępuj zgodnie z bardziej szczegółowymi instrukcjami w podanym linku.
B) Awarie podstawowych danych
Zmiana nazw folderów czasami psuje dane podstawowe. Istnieje kilka możliwych powodów, dla których tak jest, a poniżej przedstawiam kilka poprawek, które mogę zasugerować:
Nieprawidłowa nazwa modelu AppDelegate . Tak było w mojej sytuacji. Przejdź do AppDelegate i znajdź let container = NSPersistentContainer(name: "YOUR CORE DATA MODEL NAME")
. Upewnij się, że nazwa jest poprawna.
W przyszłości (kilka lat po tym poście, gdy Apple ponownie zmieni dane podstawowe) lub jeśli używasz starszej wersji danych podstawowych, przyjrzyj się uważnie AppDelegate. Prawdopodobnie jest tam coś dziwnego, co miesza z Twoimi podstawowymi danymi.
Nieprawidłowa nazwa modelu w xcdatamodeld . Przejdź do Findera i otwórz plik .xcdatamodeld w edytorze tekstu.
Sprawdź co następuje:
<plist version="1.0">
<dict>
<key>_XCCurrentVersionName</key>
<string>YOUR CORE DATA MODEL NAME.xcdatamodel</string> <-- Make sure this is correct.
</dict>
</plist>
Więcej szczegółów tutaj: Pliki modelu Core Data nie są ładowane przy zmianie nazwy
- Jeśli dwie powyższe rzeczy nie działają, spróbuj 1) usunąć swoją encję, a następnie dodać inną jednostkę, która jest identyczna lub 2) usunąć xcdatamodeld, a następnie dodać kolejny model danych, który jest identyczny (i upewnij się, że nazwa nowego xcdatamodeld jest zgodna co znajduje się w AppDelegate i reszcie kodu). Nigdy nie rób tego za pomocą działającej aplikacji - lub jeśli to zrobisz, pamiętaj o prawidłowej migracji danych podstawowych.