2015-06-20 17 views
0

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

谓词的核心数据模型检查是如何定义的“ID”属性?如果您不*添加谓词,则获取请求是否返回?结果中想要的对象是? –

+0

id是Object实体的int64属性 –

+0

它返回实体中的所有对象 –

回答

1

我有点猜测,但问题可能是 的%d格式格式化一个C int值,这是一个 32位装置上的32位值。对于64位整数,则应更换通过

NSPredicate(format: "object.id == %lld", id) 

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

没有解决任务>< –

+0

@ user3224534:那么我在你的问题的评论中提出的调试如何? –