在尝试使用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
}
答案 0 :(得分:0)
您需要为每个实体创建一个托管对象类。另外,为了获得Appdelegate,我没有看到您包含头文件,也没有看到托管对象类的头文件。这些都是您的应用程序能够访问上下文和托管对象所必需的。
答案 1 :(得分:0)
使用文件检查器,选择您正在使用的实体并使用实体检查器,您需要更改实体类。如果将其保留为NSManagedObject(默认值),则需要使用setValue:forKey:为自定义实体指定值。'
编辑:与此相关的内容:不要为自定义实体类使用通用名称。在使用objective-c运行时中存在的名称(例如“Contact”)时,您可能会发现自己遇到运行时错误。在创建子类时使用项目前缀,即使对于实体类也是如此。