CoreData 在跨越 NSManagedObjectContext 时不显示调试警告

问题描述 投票:0回答:0

在我的 Xcode 方案中,我在启动时添加了这个参数:

-com.apple.CoreData.ConcurrencyDebug 1

我现在正试图故意搞砸以查看调试错误,但没有出现。在我的方法中,我在后台任务中抓取一个随机实体并将其发布在通知中:

PersistenceController.shared.container.performBackgroundTask { context in
  let random = Int.random(in: 1 ... Int(max))

  let request = Number.fetchRequest()
  request.predicate = NSPredicate(format: "%K == %d", #keyPath(Number.value), random)
  request.fetchLimit = 1

  let entities = try! context.fetch(request),
  let entity = entities.first!

  let userInfo = ["object": entity]

  Notification.Name.example.post(userInfo: userInfo)
}

在通知处理程序中,我然后有目的地交叉 MOC:

guard let entity = note.userInfo?["object"] as? Number else {
  return
}

viewContext.perform {
  let message = entity.display ?? "WTF"

  DispatchQueue.main.async {
    display = message
  }
}

viewContext
是环境提供的,与用于查询实体的上下文不同,为什么我没有失败?

我知道启动标志设置正确,正如我在运行时在控制台中看到的那样:

CoreData:注解:核心数据多线程断言已启用。

core-data
© www.soinside.com 2019 - 2024. All rights reserved.