0

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

|杂项|错误| [ISyncSession _validateClient:entityNames:beforeDate:clientHasTruthForEntityNames:target:selector:] 中的 SyncServices 前提条件失败:未指定实体

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

更新

好的,我已经在同步检查器中显示了它,但仍然出现无法识别的错误。你是什​​么意思我在守护进程的客户描述是错误的?谢谢。

更新

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

ZAssert([[ISyncManager sharedManager] registerSchemaWithBundlePath:path], @"注册同步模式失败");

我收到此错误:(

[注意:此异常源自服务器。] *** -[NSCFArray insertObject:atIndex:]:尝试插入 nil

4

1 回答 1

0

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

更新

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

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

更新

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

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

此错误意味着您的同步架构仍然不完全有效。您的桌面客户端是否同步?

你能在同步检测器中看到它的数据吗?

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

更新同步检查器

好的,我已经在同步检查器中显示了它,但仍然出现无法识别的错误。你是什​​么意思我在守护进程的客户描述是错误的?谢谢。

在同步检查器中,我猜您正在查看所有实体和数据?

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

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

更新 ZAssert

该行展开为:

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

有几件事可能导致这种情况:

  1. 您的路径为零,请在调试器中检查
  2. 您的同步架构有问题。

您还看到了哪些其他调试注释?

于 2010-03-24T14:35:35.680 回答