gpt4 book ai didi

ios - 现有应用程序中具有工作核心数据的 DATAStack 库

转载 作者:行者123 更新时间:2023-11-30 13:14:53 27 4
gpt4 key购买 nike

我有一个应用程序,其中已经具有工作核心数据和持久存储功能。我想使用DATAStack在此应用程序中,但我无法让它工作。

如果没有 DATAStack,我的 AppDelegate 中就有所有这些标准核心数据 lazy var。在我的 ViewController 中,我像这样检索了 ManagedObjectContext:let moc = (UIApplication.sharedApplication().delegate as!AppDelegate).managedObjectContext。将 moc 变量传递给负责存储的函数,并在某处调用 moc.save() 。我知道这是有效的,因为我还检索并在屏幕上显示存储的条目,这在完全关闭应用程序后也有效。我使用 sqlite 数据库查看器(SQLPro for SQLite Read-Only)检查 sqlite 数据库。

现在,使用 DATAStack,我在 AppDelegate 中添加了一个新行:lazy var dataStack: DATAStack = DATAStack(modelName: "Database")。我的数据库模型的名称确实是Database.xcdatamodeld,因此初始化应该是正确的。在我的 ViewController 中,我用 let moc = (UIApplication.sharedApplication().delegate as!AppDelegate).dataStack 替换了上面描述的 var moc = ...。 mainContext。这个 moc 变量再次被传递,我在某处调用 moc.save() ,但现在它不存储任何内容。正如我所描述的,唯一的发生变化的是托管对象上下文的来源。

我一定缺少这个库的某些东西,但我不知道我缺少什么。

我还看过 Sync example (Sync 使用 DATAStack),但是 dataStack 对象的检索方式完全不同。

最佳答案

显然你不应该使用mainContext来保存,而应该始终使用新的背景上下文。所以获得正确的 moc 的唯一方法是这样的:

dataStack.performInNewBackgroundContext() { moc in
//Do things with moc and call moc.save() somewhere
}

关于ios - 现有应用程序中具有工作核心数据的 DATAStack 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38330630/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com