【发布时间】:2015-03-23 20:25:02
【问题描述】:
在 Swift 应用程序中遇到一个奇怪的 Core Data 问题。我相当精通 Core Data,但在 Swift 中使用它时似乎有一些(新的)粗糙边缘和“陷阱”。
我可以很好地将新对象插入到上下文中,并在运行时从我的应用程序其他地方的相同上下文中检索它们。但是,每当我尝试 save 上下文时,它都会无缘无故地失败(managedObjectContext.save() 返回 false)。当我记录或检查错误指针时,它是 0x0000000...所以我没有得到任何关于哪里出错的提示。
func saveContext() {
let error = NSErrorPointer()
if (!self.managedObjectContext.save(error)) {
println("*** Failed to save MOC with error: \(error.debugDescription)")
}
}
我设置了一个断点并检查了上下文,下面的部分结果...我还找到了“insertedObjects”属性,确实找到了我试图保存的所有数据。那里一切看起来都很好。
为什么不保存上下文?我意识到没有错误或异常,没有太多事情要做,但我希望有人遇到过这个问题,或者知道解决办法,或者至少可以为我指明正确的方向。谢谢:)
我打开 SQL 调试并尝试保存时得到以下信息。无论如何,我都不是 SQL 专家,但这看起来好像缺少了什么。也就是说,我没有看到任何 INSERT 语句。此外,奇怪的是,只有在我第一次尝试在启动应用程序时添加书签时才会生成此输出。之后就是妈妈了。
2015-03-23 14:19:13.152 NTBrowser[3535:157990] CoreData: sql: SELECT TBL_NAME FROM SQLITE_MASTER WHERE TBL_NAME = 'Z_METADATA' 2015-03-23 14:19:13.152 NTBrowser[3535:157990] CoreData: sql: pragma journal_mode=wal 2015-03-23 14:19:13.152 NTBrowser[3535:157990] CoreData: sql: pragma cache_size=200 2015-03-23 14:19:13.153 NTBrowser[3535:157990] CoreData: sql: 从 Z_METADAT 中选择 Z_VERSION、Z_UUID、Z_PLIST
【问题讨论】:
-
请检查此答案stackoverflow.com/a/33379649/5093900 在我的情况下,原因是“尝试保存未填写足够字段的对象”。
标签: ios core-data nsmanagedobjectcontext