2017-02-14 21 views
0

我想通过我的CoreData筛选匹配的名称,如果它存在忽略它,或者将新名称添加到核心数据。我遇到的问题应该是一个简单的问题,但我无法弄清楚。NSPredicate和CoreData密钥编码合规性问题

here's a link to a shot of my code

在我coredata值是String类型的 “TRACKNAME”,但我不断收到以下异常:

终止应用程序由于未捕获的异常 'NSUnknownKeyException',原因:“[valueForUndefinedKey: ]:该类不是关键字trackName的关键字编码兼容。

我该如何继续?提取请求是否适用于字符串不明确吗?

+0

请勿张贴图片。邮政编码!该解决方案非常简单,但没有人愿意从屏幕截图重新输入代码。 – vadian

+0

感谢您的反馈!我会在下一次发布代码(不可避免地)要求更多帮助,哈哈 – AaronBeReal

回答

0

您对NSFetchRequest实例调用value(forKey:),但关键是只为NSManagedObject情况下,代表你的Track实体定义。

提取请求是表示核心数据查询的对象。根据您的代码,我假设您正在尝试确保trackName媒体资源在所有Track实体中都是唯一的。您需要​​获取请求并检查以确保该方法返回的数组为空。

+0

谢谢@DaveWeston,这真的有帮助。你是对的,我试图确保我没有输入重复的Track实体,如果'trackName'已经存在。因为我是核心数据的新手(一般来说编码是诚实的),我不清楚如何访问我的查询中检索到的位 – AaronBeReal

0

请更新您的代码,这一个和尝试

if result == nil { 
    //result is null because you entered string is not found the valueForkey is also not found in your result 
    print("new entry") 
}else{ 
    print("added") 
}