关于使用错误方法的Xcode核心数据中的错误?

时间:2012-10-16 21:28:09

标签: ios xcode core-data

在尝试使用CoreData时,我不断收到错误消息(所有3个都在代码一侧列为注释,以便您知道它们在哪里)。我出于某种原因在网上找不到这些错误。我是CoreData的新手,非常有兴趣了解我做错了什么。如果有人想知道,我有这个脚本的早期版本,但它改变了太多(见CoreData errors for simple adding to database

@synthesize username, password;

- (IBAction)saveData:(id)sender {
    AppayAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context = [appDelegate managedObjectContext];    

    NSManagedObject *newContact;      //Unknown type, did you mean NSManagedObjectModel?

    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:context];      //Use of undeclared identifier NSEntityDescription. Did you mean kSecAttrDescription?

    [newContact setValue:name.text forKey:@"name"];
    [newContact setValue:address.text forKey:@"address"];

    name.text = @"";
    address.text = @"";

    NSError *error;
    [context save:&error];    //instance method -save not found
}

2 个答案:

答案 0 :(得分:0)

您需要为每个实体创建一个托管对象类。另外,为了获得Appdelegate,我没有看到您包含头文件,也没有看到托管对象类的头文件。这些都是您的应用程序能够访问上下文和托管对象所必需的。

答案 1 :(得分:0)

使用文件检查器,选择您正在使用的实体并使用实体检查器,您需要更改实体类。如果将其保留为NSManagedObject(默认值),则需要使用setValue:forKey:为自定义实体指定值。'

编辑:与此相关的内容:不要为自定义实体类使用通用名称。在使用objective-c运行时中存在的名称(例如“Contact”)时,您可能会发现自己遇到运行时错误。在创建子类时使用项目前缀,即使对于实体类也是如此。