为预览目的创建一个假的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创建一个新的全局上下文

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

我在内存中创建了一个新的PersistenceController,正如Joakim Danielson在评论中建议的那样,但是将它与其他上下文一起使用会导致崩溃和错误消息。然而,简单地创建一个新的NSManagedObjectContext就可以了。

没有保存到我的"real"上下文,要么(Apple文档):

变更管理对象保存在内存中,在相关的上下文中,直到上下文保存到一个或多个持久存储

let tempMoc = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)

使用

let person = Person(tempMoc, "Person Name")

相关内容

  • 没有找到相关文章

最新更新