使用谓词获取始终返回nil

时间:2015-06-20 16:48:17

标签: ios swift core-data nspredicate nsfetchrequest

我有两个实体,一个是“对象”,另一个是“徽标”,他们有一对一的关系。当我向核心数据添加一些徽标时,我想检查我的对象是否已经有一个。所以我用它做谓词和获取。但我的结果总是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
    }

1 个答案:

答案 0 :(得分:1)

我有点猜测,但问题可能就是这样 %d格式格式化C int值,该值是a的32位数量 32位设备。对于64位整数,您应该用

替换谓词
NSPredicate(format: "object.id == %lld", id)

NSPredicate(format: "object.id == %@", NSNumber(longLong: id))