函数在签入if语句后跳转else语句

时间:2019-05-03 12:58:37

标签: ios swift if-statement

我有一个函数saveOrders(),它通过比较已保存的snapshot与来自{ {1}}在函数的关闭中。如果匹配,则返回,否则在orderId语句中,根据iOS版本,向snapshot创建新记录。奇怪的是,它昨天可以正常工作,但是今天,当id不匹配时,它会直接跳转else语句。今天,我只添加了注释掉的部分。你能发现它破裂的地方吗? 这是代码:

CoreData

2 个答案:

答案 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