ios - 必须从 CoreData 调用 fetch 两次

标签 ios swift cocoa core-data

在模拟器和我的真实设备上,都会在应用程序终止时保存一个字符串数组。当我重新启动应用程序并为我的持久数据获取请求时(来自 viewDidLoad 或手动按钮操作),我在第一次尝试时得到一个空数组。直到我第二次 fetchRequest 时,我才终于拿到了我的数据。

有趣的是,这个问题似乎没有涉及时间差异。在尝试第二次获取之前,我尝试设置各种超时。我是否等待 10 秒到 1 分钟都没关系——甚至在第一次获取后立即等待;数据仅在第二次尝试时获取。

我必须使用这段代码来获取我的数据:

        var results = try self.context.fetch(fetchRequest) as! [NSManagedObject]
        while (results.isEmpty) {
            results = try self.context.fetch(fetchRequest) as! [NSManagedObject]
        }
        return results

为了我的理智,这里有一个 list :

注意** 我忘了说我正在构建一个框架。我将 CoreData 与框架的包标识符一起使用,并使用框架中包含的模型,因此我想避免必须使用框架外部的逻辑(除了在 appDelegate 中初始化框架之外)。

最佳答案

核心数据堆栈应该在位于 appDelegate.swift 的 applicationDidFinishLaunchingWithOptions 中初始化,因为 psc 是在您尝试获取数据之后添加的。

关于ios - 必须从 CoreData 调用 fetch 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41687289/

相关文章:

ios - UITableViewCell 中垂直居中右侧细节 UILabel

iOS 10 - 照片和相机的 UIImagePickerController

cocoa - NSTextView 子类中的自定义委托(delegate)方法 - 编译器警告

macos - 以编程方式访问 PhotoStream

ios - NSAttributedString 是隐藏的/不可见的

ios - 如何检查众多特定的UITextField?

ios - 如何在没有 segue 的情况下管理多 View 应用程序

ios - 在 SwiftUI WidgetKit 中的何处添加观察者

properties - Swift 类 : Property not initialized at super. init 调用中出现错误

Cocoa 在 TableView 中显示许多项目