简单添加到数据库的 CoreData 错误

Posted

技术标签:

【中文标题】简单添加到数据库的 CoreData 错误【英文标题】:CoreData errors for simple adding to database 【发布时间】:2012-10-16 20:13:18 【问题描述】:

编辑:我试图找出的错误消息位于代码的右侧,列为 cmets!!!

Xcode 不断尝试提出替代方案并拒绝让我构建。这 3 个列在代码右侧的注释标记中。他们的意思是什么?我对使用核心数据非常陌生,真的希望看看我做错了什么,只是以用户名为例(我知道我不应该这样做)!

- (IBAction)saveData:(id)sender 
    NSManagedObjectContext *cxt = [self managedObjectContext];       //instance method managedObjectContext not found
    NSManagedObject *newContacts = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:cxt];
    [newContacts setValue:self.username.text forKey:@"username"];          //insert NSManagedObjectModel instead of NSManagedObject...claims that it is undeclared?
    username.text = @"";

    NSManagedObject *newContacts = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:cxt];     //trying to replace NSEntityDescription with KSecAttrDescription...claims that it is undeclared      
    [newContacts setValue:self.password.text forKey:@"password"];
    password.text = @"";

    NSError *err;
    if (![cxt save:&err]) 
        NSLog(@"An error has occured: %@", [err localizedDescription]);      //Instance Method -save not found
               


【问题讨论】:

第一个错误表明managedObjectContext 没有定义为包含此代码的任何类中的方法(或属性)。你在某个地方有这样的定义吗? (其他一些问题可能来自那个问题,所以我建议先解决它。) 解决了!但是,这是从先前对这个问题的回答中自行删除的,所以我将功劳归功于那个不知名的人。如果将来有人遇到此错误,请单击 core data.xcdatamoldeld,然后单击菜单栏(桌面)上的 Editor 部分,然后单击 set NSManagedObject Subclass 并添加它们。那么它应该可以工作了。 【参考方案1】:

CoreData 代码看起来不错,但您使用了两次NSManagedObject *newContacts,只需使用另一个变量名或删除第二个对象的NSManagedObject *

另外我建议你为你的对象创建类来直接访问变量而不是[obj setValue:value forKey:@"key"];

当然很高兴看到错误输出。

【讨论】:

嗯...我不明白。你对我的对象的类是什么意思?能给我举个例子吗。哦,错误输出在右侧作为代码中的 cmets,以便人们可以知道它在代码中的位置 虽然,创建两个联系人,一个只有一个用户名,另一个只有一个密码,是可疑的。 这是一个非常好的tutorial 关于如何使用CoreData,请在那里搜索Auto Generating Model Files,这就是我所说的对象类的意思(对不起)【参考方案2】:

解决了!但是,这是从先前对这个问题的回答中自行删除的,所以我将功劳归功于那个不知名的人。如果将来有人遇到此错误,请单击 core data.xcdatamoldeld,然后单击菜单栏(桌面)上的 Editor 部分,然后单击 set NSManagedObject Subclass 并添加它们。那么它应该可以工作了。

【讨论】:

以上是关于简单添加到数据库的 CoreData 错误的主要内容,如果未能解决你的问题,请参考以下文章

核心数据触发错误将对象添加到 NSMutableArray?

添加新属性时,CoreData 无法完成错误

添加新模型版本后Coredata找不到模型

将 CoreData 添加到现有项目

未找到 CoreData+MagicalRecord.h 文件

CoreData的简单使用数据的增删改查,轻量级的版本迁移