W Xcode 4, jeśli widzisz tylko jedną wersję swojego modelu danych w sekcji „Wersjonowany podstawowy model danych - bieżący” inspektora plików, gdy masz zaznaczony plik * .xcdatamodeld; lub masz drugą wersję pliku * .xcdatamodel pokazującą poza pakietem xcdatamodeld w nawigatorze projektu Xcode, przeczytaj poniżej.
Aby to naprawić:
1) Usuń zarówno odwołania * .xcdatamodeld, jak i * .xcdatamodel z Xcode, klikając je prawym przyciskiem myszy w nawigatorze projektu i naciskając „Usuń”.
2) Po wyświetleniu monitu przez Xcode kliknij opcję Usuń tylko odniesienia (bardzo ważne).
3) Zrestartuj Xcode, aby zachować dokładność na wypadek buforowania.
4) Ponownie dodaj pojedynczy plik * .xcdatamodeld, który zawiera oba pliki * .xcdatamodel.
Xcode powinien teraz rozpoznać relacje i umożliwić rozwinięcie pliku * .xcdatamodeld w nawigatorze projektu, aby wyświetlić oba pliki * .xcdatamodel w nadrzędnym pakiecie xcdatamodeld, pokazując również zielony znacznik wyboru obok bieżącego modelu. Powinno to również umożliwić wybranie bieżącej wersji modelu danych w inspektorze plików zamiast pokazywania tylko jednej wersji.
W „Bibliotece obiektów” nie ma nic takiego jak „wersjonowany model danych rdzenia”. Pierwsza odpowiedź (z Mac_Cain13) jest poprawna, chociaż wydaje mi się, że mam dziwny błąd, ponieważ mój model jest poza .modeld w Xcode.
StuFF Mc
@StuFFmc - Sprawdź mój post poniżej, aby naprawić problem, że plik xcdatamodel jest poza pakietem xcdatamodeld w nawigatorze projektu Xcode.
Andrew
2
Wyszukiwanie w pomocy Xcode „Bieżąca wersja” daje przepis „Ustawianie bieżącej wersji modelu zarządzanego obiektu”, który opisuje, jak to zrobić ...
Trochę poza tematem, ale jeśli dotarłeś do tego pytania, aby dowiedzieć się, jak utworzyć pierwszą nową wersję swojego modelu (tak jak zrobiłem): kliknij plik xcdatamodel >> Menu „Edytor” >> Dodaj wersję modelu
Odpowiedzi:
źródło
W Xcode 4, jeśli widzisz tylko jedną wersję swojego modelu danych w sekcji „Wersjonowany podstawowy model danych - bieżący” inspektora plików, gdy masz zaznaczony plik * .xcdatamodeld; lub masz drugą wersję pliku * .xcdatamodel pokazującą poza pakietem xcdatamodeld w nawigatorze projektu Xcode, przeczytaj poniżej.
Aby to naprawić:
1) Usuń zarówno odwołania * .xcdatamodeld, jak i * .xcdatamodel z Xcode, klikając je prawym przyciskiem myszy w nawigatorze projektu i naciskając „Usuń”.
2) Po wyświetleniu monitu przez Xcode kliknij opcję Usuń tylko odniesienia (bardzo ważne).
3) Zrestartuj Xcode, aby zachować dokładność na wypadek buforowania.
4) Ponownie dodaj pojedynczy plik * .xcdatamodeld, który zawiera oba pliki * .xcdatamodel.
Xcode powinien teraz rozpoznać relacje i umożliwić rozwinięcie pliku * .xcdatamodeld w nawigatorze projektu, aby wyświetlić oba pliki * .xcdatamodel w nadrzędnym pakiecie xcdatamodeld, pokazując również zielony znacznik wyboru obok bieżącego modelu. Powinno to również umożliwić wybranie bieżącej wersji modelu danych w inspektorze plików zamiast pokazywania tylko jednej wersji.
źródło
Dla Xcode 4.2
Kliknij YourModel.xcdatamodeld
Spraw, aby panel boczny był widoczny
W „wersjonowanym podstawowym modelu danych” wybierz „bieżące pole rozwijane”, wybierz model danych.
Teraz zielony znacznik wyboru zostanie przeniesiony do bieżącego modelu danych.
źródło
Wyszukiwanie w pomocy Xcode „Bieżąca wersja” daje przepis „Ustawianie bieżącej wersji modelu zarządzanego obiektu”, który opisuje, jak to zrobić ...
źródło
Trochę poza tematem, ale jeśli dotarłeś do tego pytania, aby dowiedzieć się, jak utworzyć pierwszą nową wersję swojego modelu (tak jak zrobiłem): kliknij plik xcdatamodel >> Menu „Edytor” >> Dodaj wersję modelu
Spowoduje to zainicjowanie wersjonowania modelu.
źródło
Działa to dla mnie: https://developer.apple.com/library/mac/recipes/xcode_help-core_data_modeling_tool/Articles/setting_current_version.html
wybór wersji podstawowego modelu danych
Teraz działa moja automatyczna migracja modelu db (z automatycznym kodem migracji w delegacie).
źródło
Możesz także użyć metody setter z CoraData ...
Po prostu zrób coś takiego ...
W twoim CustomCoreDataManager.m :
i wywołaj metodę init w ten sposób
źródło