XCode 4.2 NSManagedObject上下文构建失败

mud*_*lee 10 xcode nsmanagedobjectcontext ios5

我创建了一个带有一个Entry:UserBase的UserModel.xcdatamodeld,我添加了一个名称为UserID且类型为Integer 32的属性.

之后,我使用file-> new file-> NSManagedOBject子类为它创建类,它自动创建UserBase.h和.m.

在我的控制器中导入了UserBase.h文件,并创建了一个属性:

NSManagedObjectContext *userBaseObjectContext;
Run Code Online (Sandbox Code Playgroud)

@property (nonatomic, retain) NSManagedObjectContext *userBaseObjectContext;
Run Code Online (Sandbox Code Playgroud)

在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...");
Run Code Online (Sandbox Code Playgroud)

当我尝试构建我的项目时,我收到此错误:

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)
Run Code Online (Sandbox Code Playgroud)

那是什么意思?

我遵循了这个教程:http://mobile.tutsplus.com/tutorials/iphone/iphone-core-data/

Osc*_* S. 20

未定义的符号通常意味着缺少某些框架.框架是您可以在App上使用的预编译类库.

要在XCode 4上添加框架:

  1. 单击项目的根目录(左上角的项目,带有蓝图图标).
  2. 单击您的目标(通常是相同的应用程序名称,左侧是"铅笔制成的图标").
  3. 单击顶部的"摘要"选项卡,然后向下滚动...折叠分隔线,在"iPad部署信息"下,您将找到"链接的框架和库"部分(参见下面的图1).
  4. 单击该列表底部的"+"按钮.
  5. 弹出窗口将要求您选择框架,搜索框架,并在选择框架后单击添加.

而且,就是这样!只要您执行正确的#import,该框架中包含的类将可用于您的代码.

图1:

在此输入图像描述

为了维护您的项目订单,我建议将新添加的框架拖到Group"Frameworks".

  • 另外......在"pch"文件中添加`#import <CoreData/CoreData.h>` (3认同)