2009-10-11 6 views
6

Wygląda na to, że najnowszy Xcode 3.2 dodał kilka niuansów generacji kodu, których (jak mi się wydaje) brakowało przedśnieżnego Leoparda.Xcode 3.2.1 - Dlaczego klasy generowane przez Core Data generują błędy kompilacji?

wziąłem następujące kroki:

  1. zdefiniować prosty model .xcdatamodel z kilkoma podmiotami, w tym jeden (inversible) jedno: wielu relacji (AN Endpoint ma wiele Subscription obiektów)

  2. Plik -> Nowy i wybierz (bez ikon) "Zarządzana klasa obiektów". Od tego czarodzieja wybrałem moje zajęcia i byłem na wyścigach.

  3. Do tego czasu próbowałem zbudować. Otrzymuję ten wynik i nie można dowiedzieć się:

Niezdefiniowane symbole: "_OBJC_METACLASS _ $ _ NSManagedObject" odwołuje Od: _OBJC_METACLASS _ $ _ Subskrypcja w subskrypcji B5BE258DF28BC03B.o _OBJC_METACLASS _ $ _ Endpoint w punkcie końcowym. O "_OBJC_CLASS _ $ _ NSManagedObject", odwołuje się od: _OBJC_CLASS _ $ _ Subskrypcja w subskrypcji B5BE258DF28BC03B.o _OBJC_CLASS _ $ _ Endpoint w Endpoint.o ld: symbol (s) nie znaleziono collect2: ld zwróconym 1 exit status

Co chciałabym pomoc:

  1. Jeśli ktoś ma jakieś pomysły, co właśnie zrobiłeś źle, że byłoby fantastycznie.

  2. Wygląda na to, że jedynym sposobem na uzyskanie Xcode do * ponownego * generowania twoich zajęć jest Plik -> Nowy i zastąpienie ich ponownie, co (między innymi) skutkuje powielonymi odniesieniami do nowych klas i twojego starego pliki klas bezużyteczne pozostawione w folderze przeniesionym na bok w projekcie. Czy ktoś wie, jak zachować synchronizację? Nie znalazłem żadnej dokumentacji Apple obejmującej nowe rzeczy.

Odpowiedz

25

Czy dodałeś CoreData.framework do projektu (lub przypadkowo go usunąć)? To może być źródłem błędu łączenia.

Polecam również MOGenerator, Wolf Rentsch. Jest to znacznie potężniejszy generator kodu dla klas danych podstawowych, który wykorzystuje wzorzec luki generacji. Może automatycznie odnawiać klasy za każdym razem, gdy zapisujesz plik xcdatamodel, zachowując niestandardowy kod.

+0

Dzięki za odpowiedź. Myślałem, że tak, ale możliwe, że to przegapiłem. Spojrzałem krótko na MOGeneratora, ale nie poświęciłem czasu, aby go ocenić, ponieważ wyglądało na to, że Apple dodało podobne funkcje do Xcode 3.2 i nie chciał dodać nagle przestarzałego narzędzia do mojego przepływu pracy.Widząc, że funkcja Xcode nie jest tak naprawdę udokumentowana, równie dobrze mogę poświęcić czas na poznanie MOGeneratora. Dzięki! –

+0

Pracując nad uzyskaniem MOGeneratora i jako FYI dla każdego, kto ogląda to pytanie, od 10/13/09, Xcode 3.2.x złamał integrację xmo'd: http://www.openradar.me/7289446 –

9

Najprostszym (i najczęstszym oraz najłatwiej przeoczonym) sposobem jest przypadkowe wygenerowanie nowego zestawu klas MOC bez usuwania odniesień do starych (może w innej grupie w projekcie lub coś podobnego) . Po prostu zbyt długo waliłem głową w XCode, zanim zdałem sobie sprawę, że to dokładnie to, co zrobiłem.

+1

Dokładnie co zdarzyło mi się. Zregenerował zarządzaną klasę obiektów, ale zapomniał zmienić folder docelowy, który doprowadził do dwóch odniesień do tego samego pliku w projekcie. –

Powiązane problemy