我创建了一个 UserModel.xcdatamodeld,其中有一个条目:UserBase,并添加了一个名称为 UserID 且类型为 Integer 32 的属性。
之后,我使用 file->new file->NSManagedOBject 子类为其创建类,这会自动创建 UserBase.h 和 .m。
在我的 Controller 中导入 UserBase.h 文件,并创建一个属性:
NSManagedObjectContext *userBaseObjectContext;
和
@property (nonatomic, retain) NSManagedObjectContext *userBaseObjectContext;
在 mycontroller.m 文件中合成了 userBaseObjectContext 属性,在 DidLoad 函数中我尝试了这个:
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...");
当我尝试构建我的项目时,出现此错误:
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)
那是什么意思?
我跟着这个教程:http://mobile.tutsplus.com/tutorials/iphone/iphone-core-data/
最佳答案
undefined symbol 通常意味着缺少某些框架。框架是您可以在应用程序上使用的预编译类库。
在 XCode 4 上添加框架:
而且,就是这样!只要您执行正确的#import,该框架中包含的类将在您的代码中可用。
图1:
为了保持您的项目有序,我建议将新添加的框架拖到“框架”组中。
关于XCode 4.2 NSManagedObject 上下文构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359427/