2011-12-02 10 views
10

I stworzył UserModel.xcdatamodeld z jednego aktu: userbase i dodałem atrybut, którego nazwa jest UserID i typ jest Integer 32.XCode 4.2 NSManagedObject kontekst build udało

Po tym, tworzę dla niego zajęcia z pliku -> nowy plik-> podklasa NSManagedOBject, która automatycznie tworzy UserBase.h i .m.

W moim kontroler importowany plik UserBase.h i utworzyć właściwość:

NSManagedObjectContext *userBaseObjectContext; 

z

@property (nonatomic, retain) NSManagedObjectContext *userBaseObjectContext; 

w pliku mycontroller.m syntetyzowana właściwość userBaseObjectContext i funkcji DidLoad Próbowałem to :

UserBase *userObject=(UserBase *)[NSEntityDescription insertNewObjectForEntityForName:@"UserBase" inManagedObjectContext:userBaseObjectContext]; 
     [userObject setUserID:[NSNumber numberWithInt:42]]; 
     NSError *error; 
     if(![userBaseObjectContext save:&error]) 
     { 
      UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Application error" message:@"error" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil,nil]; 
      [alert show]; 
      [alert release]; 
     } 
     else 
      NSLog(@"not working..."); 

Kiedy próbuję zbudować mój projekt, mam to e rror:

Undefined symbols for architecture i386: 
"_OBJC_CLASS_$_NSEntityDescription", referenced from: 
    objc-class-ref in LoginController.o 
"_OBJC_METACLASS_$_NSManagedObject", referenced from: 
    _OBJC_METACLASS_$_UserBase in UserBase.o 
"_OBJC_CLASS_$_NSManagedObject", referenced from: 
    _OBJC_CLASS_$_UserBase in UserBase.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Co to oznacza?

Śledziłem ten tutorial: http://mobile.tutsplus.com/tutorials/iphone/iphone-core-data/

+3

Spróbuj dodać CoreData.framework. – rjstelling

+0

To działa. Dzięki ... – mudlee

Odpowiedz

20

niezdefiniowane symbole zazwyczaj oznaczać, że niektóre Framework brakuje. Ramy to biblioteki skompilowanych klas, z których możesz korzystać w swojej aplikacji.

Aby dodać ramy na XCode 4:

  1. Kliknij na korzeniu twojego projektu (element na lewym górnym rogu z ikoną Blueprint).
  2. Kliknij swój cel (zazwyczaj ta sama nazwa aplikacji z "ikoną ołówka" po lewej stronie).
  3. Kliknij na zakładkę "Podsumowanie" u góry, a następnie przewiń w dół ... zwiń dzielniki i pod "Informacją o rozmieszczeniu iPada" znajdziesz sekcję "Połączone struktury i biblioteki" (patrz rysunek 1 poniżej).
  4. Kliknij przycisk "+" u dołu tej listy.
  5. Wyskakujące okienko poprosi o wybranie ram, wyszukanie go i kiedy go wybrałeś, kliknij Dodaj.

I to już wszystko! Klasy zawarte w tych Ramach będą dostępne na twoim kodzie, dopóki zrobisz poprawny #import.

Rysunek 1:

enter image description here

Aby utrzymać swój projekt nakazał, będę sugerować, aby przeciągnąć nowo dodanej ramy do grupy „Ram”.

+3

Również ... dodaj '#import ' do twojego pliku "pch" – refaelos

3

Jeśli zaimportowałeś plik alertów do projektu, upewnij się, że pole wyboru jest zaznaczone na liście docelowej! Miałem ten sam problem i po zaznaczeniu tego pola błąd zniknął!

0

Spróbuj usunąć swoją klasę NSManagedObject z projektu i wygeneruj ją ponownie. Pomogło mi to;)

Powiązane problemy