我有两个实体,一个是“对象”,另一个是“徽标”,他们有一对一的关系。当我向核心数据添加一些徽标时,我想检查我的对象是否已经有一个。所以我用它做谓词和获取。但我的结果总是0,所以没有logo.object.id == id。
这样的Logos我相信他们在那里,所以我不确定这段代码。也许谓词错了?你能提一些建议吗?
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
}
答案 0 :(得分:1)
我有点猜测,但问题可能就是这样
%d
格式格式化C int
值,该值是a的32位数量
32位设备。对于64位整数,您应该用
NSPredicate(format: "object.id == %lld", id)
或
NSPredicate(format: "object.id == %@", NSNumber(longLong: id))