为预览目的创建一个假的 NSManagedObjectContext?

我想要一个“假”预览 NSManagedObject 作为示例显示。但是,我不想让它弄乱我的常规上下文。这是我假设可以工作的:

  • 创建一个新的 NSmanagedobjectcontext 并将预览 NSManagedObject 存储在那里

    let moc = NSmanagedobjectcontext(concurrencyType: .mainQueueConcurrencyType)
    let person = Person(moc,"Person Name")
    

    在这种情况下,新的上下文会发生什么?它会慢慢填满存储空间,还是会在没有调用 save() 并且删除视图的情况下被删除?

  • 离开视图时移除新创建的NSManagedObject

     SomeView()
     .onDisappear() {
         moc.delete(person)
         PersistenceController.shared.save()
     }
    

    如果 .onDisappear() 函数没有被调用,这可能不起作用,例如当用户离开应用而该特定视图仍处于打​​开状态时。

  • 将假预览 NSMangagedObject 添加到常规上下文中并过滤掉其他所有地方(可能是最糟糕的主意)

  • 仅为假 NSManagedObjects 创建新的全局上下文

不确定这些选项中的哪一个是最好的,或者是否有我没有想到的更好的方法。谢谢:)

dzc361 回答:为预览目的创建一个假的 NSManagedObjectContext?

我按照 Joakim Danielson 在评论中的建议在内存中创建了一个新的 PersistenceController,但是将它与我​​的其他上下文一起使用会导致崩溃和错误消息。然而,简单地创建一个新的 NSManagedObjectContext 效果很好。

它也没有保存到我的“真实”上下文中(Apple 文档):

对托管的更改 对象被保存在内存中,在相关的上下文中,直到 上下文被保存到一个或多个持久化存储区

let tempMoc = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)

用法

let person = Person(tempMoc,"Person Name")
本文链接:https://www.f2er.com/11824.html

大家都在问