在使用ZSync和CoreData同步时如何调试“未指定实体”

时间:2010-03-22 22:08:29

标签: iphone cocoa core-data synchronization zsync

我正在尝试让ZSync在桌面和iPhone应用之间工作。我已经设置了我的模式,并且我的MOM和模式之间的所有信息都匹配,所以我应该好好去。但是,当我启动同步时,我收到此错误。

  

|杂项|错误| SyncServices   [ISyncSession中的前提条件失败   _validateClient:entityNames:beforeDate:clientHasTruthForEntityNames:目标:选择:]:   没有指定实体

任何人都知道这意味着什么,以及如何调试它? 我是这个SyncServices的新手。 干杯!

更新

好的,我已经在syncrospector中显示了它,但仍然收到无法识别的错误。 你在守护进程中的客户端描述是什么意思错了? 感谢。

更新

好吧,我让clientDescription正常工作,但现在当它触发时:

  

ZAssert([[ISyncManager sharedManager]   registerSchemaWithBundlePath:路径],   @“无法注册同步模式”);

我收到此错误:(

  

[注意:这个例外起源于   服务器。]   *** - [NSCFArray insertObject:atIndex:]:尝试   插入

1 个答案:

答案 0 :(得分:0)

这是您的同步服务设置中的问题。这意味着您尚未声明需要同步的实体。我建议将您的SyncSchema子项目(对于您的桌面应用程序端)与SampleDesktop项目中包含的子项目进行比较。

更新

  

我检查了所有这些,但无济于事。我正在使用一个版本化的妈妈,会有所作为吗?在我的ManagedObjectModels中,我应该使用版本或集合的名称吗? (妈妈还是妈妈?)谢谢,我快到了!

不,架构应该指向您的最新型号。你确定它正确地指向它吗?这可能是最棘手的一点。您是在模式包中包含模型还是在引用模型?

更新

首先,请将这些更新放入您的问题中,评论部分真的不适合他们。

  

好吧,克服了这个问题。同步开始现在我得到“无法注册客户端因为:名为Xmac的客户端想要同步无法识别的实体名为:X.Entity”这种情况发生在所有我的实体上,遗憾的是。

此错误表示您的同步架构仍然无法完全有效。您的桌面客户端是否同步?

你能在同步控制器中看到它的数据吗?

如果是这样,那么守护进程中的客户端描述是错误的。如果它没有同步,那么首先解决它,因为它听起来像你的SyncSchema包仍然是不正确的。我建议尝试将它与项目中包含的sampleDesktop应用程序进行比较。

更新Syncrospector

  

好的,我已经在syncrospector中显示了它,但仍然收到无法识别的错误。你在守护进程中的客户端描述是什么意思错了?感谢。

在同步控制器中,我猜你看到了所有的实体和数据?

在守护程序上,有一个clientDescription.plist。此plist描述守护程序将与哪些数据同步。该plist需要更新(因为默认值是指样本应用程序等),以引用您的数据结构,就像桌面应用程序一样。

在不久的将来,这篇文章将被移动到一个插件中,这样你就不会直接修改守护进程了。预计在接下来的几周内会看到项目本身的更新。但是现在,(并且可以重复使用),修改守护进程内部的plist,你应该准备好同步了。

更新ZAssert

该行解开:

BOOL success = [[ISyncManager sharedManager] registerSchemaWithBundlePath:path];
NSAssert(success, @"Failed to register sync schema");

有些事情可能导致这种情况:

  1. 您的路径为零,请在调试器中检查
  2. 您的同步架构有问题。
  3. 您还看到了哪些其他调试评论?