【发布时间】:2013-03-03 22:13:49
【问题描述】:
我已经使用 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
这真的让我很困惑,因为在向数据存储加载或添加数据时不会产生任何错误,所以理论上它应该可以工作。
非常感谢您的帮助!!
【问题讨论】:
-
嗯,显而易见的问题是,您确定您正在收听通知吗?而不是以某种方式取消注册?
-
是的,没有取消注册 - 观察者与所有其他核心数据一起在应用程序委托上。收据.0.cdt 文件都只有 1kb,所以我想知道是否有任何东西首先移动到云中
标签: core-data icloud nspersistentstore