【发布时间】:2015-06-20 16:48:17
【问题描述】:
我有两个实体,一个是“对象”,另一个是“徽标”,它们具有一对一的关系。当我向核心数据添加一些徽标时,我想检查我的对象是否已经有一个。所以我制作谓词并用它获取。但是我的结果总是0,所以没有logo.object.id == id这样的Logo。
我确定它们在那里,所以我不确定这段代码。也许谓词是错误的?你能给点建议吗?
class func fetchLogoWithId(moc: NSManagedObjectContext, id: Int64) -> Logo? {
var fetchRequest = NSFetchRequest(entityName: "Logo")
fetchRequest.predicate = NSPredicate(format: "object.id == %d", id)
var error: NSError?
if moc.countForFetchRequest(fetchRequest, error: &error) == 0 {
return nil
}
var logo = moc.executeFetchRequest(fetchRequest, error: &error)
if error != nil {
return nil
}
println("--------------")
println(logo)
println("--------------")
return logo?.first as? Logo
}
【问题讨论】:
-
Core Data 模型检查器中的“id”属性是如何定义的?如果您不添加谓词,获取请求是否会返回某些内容?结果中是否有想要的对象?
-
id 是 Object 实体的 int64 属性
-
返回实体中的所有对象
-
激活 Core Data SQLite 调试 (stackoverflow.com/questions/12306343/…) 并将输出添加到您的问题中。
-
你还应该展示你是如何调用这个函数的,并确保你传递了你认为你正在传递的 ID。
标签: ios swift core-data nspredicate nsfetchrequest