macos - 核心数据软管本身

标签 macos cocoa core-data

我会定期从 Xcode 启动我的应用程序,以查找由于模型文件为空而导致的核心数据错误。版本控制的模型文件可以在主包中找到,但模型文件仍然初始化为零。请参阅我的回答以获取部分解决方法,但迄今为止还没有解决方案。

我已验证这些文件存在并且可以使用访问功能进行访问。我尝试使用 initWithContentsOfURL 和 mergedModelFromBundles 得到相同的结果。

这种情况是随机发生的,我怀疑有什么东西正在幕后更改模型文件,但我不知道是什么。

最佳答案

重新启动我的计算机似乎已经解决了与安全相关的崩溃,但这也需要删除现有的核心数据存储文件,因为它提示现有的文件与模型文件不匹配。

[更新]

重新启动并不能解决问题。但是重置核心数据模型文件的当前版本就可以了。我将其更改为旧版本,然后又更改回来。这个问题帮助我认为这是值得尝试的事情。 Using mergedModelFromBundles: and versioning (CoreData)仍然不确定根本问题是什么。

[另一更新]

我在 Core Data momd 文件包中的 .xccurrentversion 文件上放置了一个文件监视器,以观察文件何时被触摸。我注意到,当 XCode 进入前台时(无论是打开项目还是在后台运行一段时间),XCode(或某些构建工具)都会定期更新 .xccurrentversion 文件。今天执行此操作时,它将文件设置 _XCCurrentVersionName 更新为主 momd 文件包而不是版本文件。我用旧版本替换了 .xccurrentversion 文件,然后它启动了。这可以解释为什么重置当前模型版本可以解决此问题。我不知道 XCode 更新这个文件的条件是什么。

关于macos - 核心数据软管本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27615128/

相关文章:

c - openssl 的链接器和编译器错误

iphone - 我如何使用 NSFetchedResultsController 来获取基于实体关系的结果?

使用 CoreData 插入数千条数据时 iOS 应用程序崩溃

c++ - Mac OS X Lion 上的 LLVM

ios - Xcode:增加内部版本号

c++ - EXC_BREAKPOINT 崩溃的原因

objective-c - 你如何实现 NSPageController 来浏览 webView 的历史记录

xcode - 从 MainMenu.xib 初始化 NSObject

objective-c - 从 plist 中检索允许的文件类型的聪明方法

ios - 是否有某种方法可以让每个应用程序都使用单个 NSManagedObjectContext 进行读取和写入?