NSManagedObject属性同时访问

时间:2018-06-07 06:48:03

标签: swift core-data concurrency

所以我的任务是找出我们的应用程序中与遗留应用程序上的核心数据相关的随机崩溃的原因,我遇到了将-com.apple.CoreData.ConcurrencyDebug 1添加到方案中午餐时传递的参数。 / p>

到目前为止,它似乎抛出了很多例外,它给了我方向,但我注意到大多数例外情况发生在我试图访问NSManagedObjects属性时它会引发异常并且这种情况在整个过程中经常发生应用程序然后使用performperformAndWait块进行修复。

我也发现自己这样做了几次,引用了NSManagedObject但当时没有上下文

managedObject?.managedObjectContext.object(with:managedObject.objectID)

这感觉不对,如果有或没有,请随时告诉我。

同样不得不使用上下文perform块以这样的频率发生,我想要覆盖访问器方法以自动执行此操作。

e.g

class Object: NSManagedObject {
  @NSManaged var attendeeCustomLine1: String?

  var threadSafeAttendeeCustomLine1: String? {
    get {
        var retVal:String?
        managedObjectContext?.performAndWait {
          guard let attendeeCustomLine1 = attendeeCustomLine1 else {
            return
          }

          retVal = attendeeCustomLine1
        }

      return retVal;
    }
  }
}

这是一种可行的方法吗? 如果是,为什么不是默认值?它会节省一点时间 如果没有为什么没有,那么替代方案是什么?

0 个答案:

没有答案