0

在尝试使用 CoreData 时,我不断收到错误消息(所有 3 个都作为注释列在代码的一侧,以便您知道它们在哪里)。由于某种原因,我无法在网上找到这些错误。我对 CoreData 很陌生,并且很想知道我做错了什么。如果有人想知道,我有这个脚本的早期版本,但它改变了太多(参见CoreData errors for simple added 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
}
4

2 回答 2

0

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

于 2012-10-16T21:48:11.347 回答
0

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

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

于 2012-10-16T22:03:08.773 回答