1

我试图从 json 文件填充我的 iOS sqlite 数据库。我已经使用 python 编写了一个脚本来执行此操作,它读取 json 文件和 coredata Model.xcdatamodeld 文件。使用 mogenerator 创建必要的 h 和 m 文件,并将信息写入 sqlite 文件,如下所示(以下是生成 sqlite 文件的部分代码)

psc = NSPersistentStoreCoordinator.alloc().initWithManagedObjectModel_(mom)
psc_option = {
    NSMigratePersistentStoresAutomaticallyOption : True,
    NSInferMappingModelAutomaticallyOption : True,
}
psc.addPersistentStoreWithType_configuration_URL_options_error_(NSSQLiteStoreType, None, dataURL, psc_option, None)
moc = NSManagedObjectContext.new()
moc.setPersistentStoreCoordinator_(psc)

以前一切正常,但在我升级到 Maverick 后,输出文件生成了 2 个附加文件(.sqlite-shm 和 .sqlite-wal)。并且输出的 sqlite 文件似乎是空的(即使脚本成功解释了 coredata 文件和 json 文件)。我只是想知道是否有人知道这些文件是什么?以及有关可能导致此问题的任何建议?(我怀疑在保存过程中某些行为必须改变,但我不确定)。

4

1 回答 1

2

Apple 已将默认日志模式更改为 WAL 模式(SQLite Write-Ahead Logging),如Core Data 和 iOS 7:持久存储的不同行为中所述

这是通过将相关的 SQLite 编译指示选项传递给 NSPersistentStoreCordinator 来完成的。 寻找Configuring a SQLite Store’s Save Behavior

或者也许这篇网络文章可能更清楚: Core Data Migration Manager 和 journal_mode WAL 的问题

于 2013-11-01T16:13:46.737 回答