我有一个函数saveOrders()
,它通过比较已保存的snapshot
与来自{ {1}}在函数的关闭中。如果匹配,则返回,否则在orderId
语句中,根据iOS版本,向snapshot
创建新记录。奇怪的是,它昨天可以正常工作,但是今天,当id不匹配时,它会直接跳转else
语句。今天,我只添加了注释掉的部分。你能发现它破裂的地方吗?
这是代码:
CoreData
答案 0 :(得分:0)
由于获取是使用orderId进行的,因此您应该这样做
let predicate = NSPredicate(format: "orderId == %@", orderId)
if orderFetch.count == 0 {
// save
}
else {
// return
}
orderId
应该是唯一
答案 1 :(得分:0)
CoreData在延迟加载属性方面很有用。 (首先是对象图)。实际上,这是新的访存对象的默认设置。我看不到创建提取的函数,但是您确定提取的对象不仅仅是延迟加载参考吗?在这种情况下,您的orderId为零。
在这种情况下,请将此行添加到您的函数或创建请求的函数中。
orderRequest.returnsObjectsAsFaults = false
并确保您请求的是managedObjectResultType,而不是managedObjectIDResultType。
您现在应该获得真实的物体。 (当然是为了牺牲性能) https://developer.apple.com/documentation/coredata/nsfetchrequest/1506756-returnsobjectsasfaults?language=objc