我已经使用 SQLite 日志设置了核心数据以与 iCloud 一起使用,我同时打开了核心数据和 SQLite 日志并在我的架构中达到了 3 级,这些都不会在从本地存储或云中获取或放置数据时产生错误店铺。
我的本地存储存储所有 SQLite 数据,而云存储配置为仅移动 2 个实体,因为所有本地存储都不需要更新。
记录持久存储时,它们都会出现。
在 developer.icloud.com 上,该文件夹用于存储数据,有两个子文件夹(一个用于 iPad,另一个用于 iPhone)。每个文件夹中都有两个子文件夹和一个receipt.0.cdt
文件。
即使一切似乎都已设置,但当我在我的应用程序中操作两个实体之一时,NSPersistentStoreDidImportUbiquitousContentChangesNotification
永远不会触发(在任一设备上)。
即使本地数据存储(保存所有实体的本地副本)已更新,并且此更改也会反映在 UI 中。
这是被操纵的商店(在操纵发生时记录)
2013-03-03 22:02:49.826 Clueless[1168:907] MOC P-Stores: (
"<NSSQLCore: 0x1d5b1180> (URL: file://localhost/private/var/mobile/Library/Mobile%20Documents/<id~com~company~appname>/Data.nosync/CategoryModel.sqlite)",
"<NSSQLCore: 0x1d5ca280> (URL: file://localhost/var/mobile/Applications/EEBE0D5E-1AC0-4A11-AA4B-FB9A63A7F95A/Documents/CategoryModel.sqlite)"
)
下面是我操作实体后产生的数据的日志:
2013-03-03 22:02:49.836 Clueless[1168:907] CoreData: sql: BEGIN EXCLUSIVE
2013-03-03 22:02:49.839 Clueless[1168:907] CoreData: sql: UPDATE ZIMAGEANSWERAVAILABILITY SET Z_OPT = ? WHERE Z_PK = ? AND Z_OPT = ?
2013-03-03 22:02:49.842 Clueless[1168:907] CoreData: details: SQLite bind[0] = (int64)2
2013-03-03 22:02:49.844 Clueless[1168:907] CoreData: details: SQLite bind[1] = (int64)18
2013-03-03 22:02:49.845 Clueless[1168:907] CoreData: details: SQLite bind[2] = (int64)1
2013-03-03 22:02:49.851 Clueless[1168:907] CoreData: sql: UPDATE ZIMAGEANSWERAVAILABILITY SET Z_OPT = ? WHERE Z_PK = ? AND Z_OPT = ?
2013-03-03 22:02:49.861 Clueless[1168:907] CoreData: details: SQLite bind[0] = (int64)2
2013-03-03 22:02:49.863 Clueless[1168:907] CoreData: details: SQLite bind[1] = (int64)13
2013-03-03 22:02:49.865 Clueless[1168:907] CoreData: details: SQLite bind[2] = (int64)1
2013-03-03 22:02:49.866 Clueless[1168:907] CoreData: sql: UPDATE ZSYMBOL SET ZANSWERSTATE = ?, Z_OPT = ? WHERE Z_PK = ? AND Z_OPT = ?
2013-03-03 22:02:49.868 Clueless[1168:907] CoreData: details: SQLite bind[0] = 2
2013-03-03 22:02:49.870 Clueless[1168:907] CoreData: details: SQLite bind[1] = (int64)2
2013-03-03 22:02:49.875 Clueless[1168:907] CoreData: details: SQLite bind[2] = (int64)8
2013-03-03 22:02:49.878 Clueless[1168:907] CoreData: details: SQLite bind[3] = (int64)1
2013-03-03 22:02:49.880 Clueless[1168:907] CoreData: sql: COMMIT
2013-03-03 22:02:49.909 Clueless[1168:907] CoreData: sql: pragma page_count
2013-03-03 22:02:49.911 Clueless[1168:907] CoreData: annotation: sql execution time: 0.0026s
2013-03-03 22:02:49.913 Clueless[1168:907] CoreData: sql: pragma freelist_count
2013-03-03 22:02:49.915 Clueless[1168:907] CoreData: annotation: sql execution time: 0.0021s
这真的让我感到困惑,因为在加载或向数据存储中添加数据时不会产生错误,所以理论上它应该可以工作。
非常感谢你的帮助!!