我有两个实体,一个是“对象”,另一个是"Logo",它们是一对一的关系。当我向核心数据添加一些Logo时,我想检查我的对象是否已经有一个Logo。所以我用它做谓词和fetch。但是我的结果总是0,所以没有带有logo.object.id == id的徽标。
我确信它们在那里,所以我对这段代码不太确定。也许谓词是错的?你能给我一些建议吗?
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
}发布于 2015-06-21 01:59:49
我有点猜测,但问题可能是%d格式格式化了一个C int值,这在32位设备上是一个32位的数量。对于64位整数,应将谓词替换为
NSPredicate(format: "object.id == %lld", id)或
NSPredicate(format: "object.id == %@", NSNumber(longLong: id))https://stackoverflow.com/questions/30956540
复制相似问题