【发布时间】:2021-07-30 06:34:52
【问题描述】:
我希望显示一个“假”预览NSManagedObject 作为示例。但是,我不想让它弄乱我的常规上下文。以下是我假设可行的方法:
-
创建一个新的
NSManagedObjectContext并将预览NSManagedObject存储在那里let moc = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) let person = Person(moc, "Person Name")在这种情况下,新的上下文会发生什么?如果没有调用
save()并且视图被删除,它会慢慢填满存储空间还是会被删除? -
离开视图时删除新创建的
NSManagedObjectSomeView() .onDisappear() { moc.delete(person) PersistenceController.shared.save() }如果
.onDisappear()函数没有被调用,这可能不起作用,例如当用户在该特定视图仍处于打开状态时离开应用程序。 -
将伪造的预览
NSMangagedObject添加到常规上下文中并在其他任何地方过滤掉它(可能是最糟糕的想法) -
仅为伪造的
NSManagedObjects 创建一个新的全局上下文
不确定这些选项中哪个最好,或者是否有更好的方法我没有想到。谢谢:)
【问题讨论】:
-
更好的解决方案是让你的持久化存储只存在于内存中,这样当应用程序终止时,创建的任何对象都将被删除。如果您在 Xcode 中创建新的核心数据项目,则生成的持久性控制器类中会内置对此的支持
-
@JoakimDanielson 我会这样做的,谢谢:)
标签: swift core-data nsmanagedobject nsmanagedobjectcontext