使用 ZSync 和 CoreData 同步时如何调试“未指定实体”
Posted
技术标签:
【中文标题】使用 ZSync 和 CoreData 同步时如何调试“未指定实体”【英文标题】:How to debug 'no entities specified' when working with ZSync and CoreData Syncing 【发布时间】:2010-03-22 22:08:28 【问题描述】:我正在尝试让 ZSync 在桌面和 iPhone 应用程序之间工作。我已经设置了我的模式,并且我的 MOM 和我的模式之间的所有信息都匹配,所以我应该很高兴。但是,当我启动同步时,我收到此错误。
|其他|错误|同步服务 [ISyncSession 中的前提条件失败 _validateClient:entityNames:beforeDate:clientHasTruthForEntityNames:target:selector:]: 没有指定实体
任何人都知道这意味着什么,以及如何调试它? 我是这个 SyncServices 东西的新手。 干杯!
更新
好的,我已经在 syncrospector 中显示了它,但仍然出现无法识别的错误。 你是什么意思我在守护进程的客户描述是错误的? 谢谢。
更新
好的,我有 clientDescription 工作,但现在当它触发时:
ZAssert([[ISyncManager sharedManager] registerSchemaWithBundlePath:path], @"注册同步模式失败");
我得到这个错误:(
[注意:此异常起源于 服务器。] *** -[NSCFArray insertObject:atIndex:]: 尝试 插入零
【问题讨论】:
【参考方案1】:这是您的同步服务设置中的一个问题。这意味着您尚未声明需要同步哪些实体。我建议将您的 SyncSchema 子项目(针对您的桌面应用程序端)与 SampleDesktop 项目中包含的子项目进行比较。
更新
我检查了所有这些,但无济于事。我正在使用版本化的妈妈,这会有所不同吗?在我的 ManagedObjectModels 中,我应该使用版本名称还是集合名称? (妈妈还是妈妈?)谢谢,我快到了!
不,架构应该指向您的最新模型。您确定它指向正确吗?这可能是最棘手的部分之一。您是在模式包中包含模型还是引用它?
更新
首先,请把这些更新放到你的问题中,评论部分真的不适合他们。
好的,解决了这个问题。同步现在开始我得到“无法注册客户端,因为:名为 Xmac 的客户端想要同步名为:X.Entity 的无法识别的实体”,遗憾的是,我的所有实体都会发生这种情况。
此错误意味着您的同步架构仍然不完全有效。您的桌面客户端是否同步?
你能在同步检测器中看到它的数据吗?
如果是这样,那么您在守护进程中的客户端描述是错误的。如果它不同步,那么首先解决这个问题,因为听起来您的 SyncSchema 捆绑包仍然不正确。我建议尝试将其与项目中包含的 sampleDesktop 应用程序进行比较。
更新同步检查器
好的,我已经在同步检查器中显示了它,但仍然出现无法识别的错误。你是什么意思我在守护进程的客户描述是错误的?谢谢。
我猜你在同步检查器中看到了你所有的实体和数据?
在 Daemon 上有一个 clientDescription.plist。此 plist 描述了守护程序将与哪些数据同步。该 plist 需要更新(因为默认的 plist 是指示例应用程序等)以引用您的数据结构,就像您的桌面应用程序一样。
在不久的将来,这篇文章将被移到插件中,这样您就不会直接修改守护进程。预计在接下来的几周内会看到项目本身的更新。但是现在,(并且可以重复使用),修改守护进程内的 plist,你应该准备好同步了。
更新 ZAssert
该行展开为:
BOOL success = [[ISyncManager sharedManager] registerSchemaWithBundlePath:path];
NSAssert(success, @"Failed to register sync schema");
有几件事会导致这种情况:
-
您的路径为零,请在调试器中检查
您的同步架构有问题。
您还看到了哪些其他调试 cmets?
【讨论】:
我检查了所有这些,但无济于事。我正在使用版本化的妈妈,这会有所不同吗?在我的以上是关于使用 ZSync 和 CoreData 同步时如何调试“未指定实体”的主要内容,如果未能解决你的问题,请参考以下文章
使用 RestKit 和 CoreData 同步修改对象的正确方法
CoreData与CloudKit同步时将图像保存到CoreData?
App 如何根据需要动态为 CoreData 开启 CloudKit 云同步功能