0

デスクトップと iPhone アプリの間で ZSync を機能させようとしています。スキーマのセットアップが完了し、MOM とスキーマの間ですべての情報が一致するので、準備完了です。ただし、同期を開始すると、このエラーが発生します。

|その他|エラー| [ISyncSession _validateClient:entityNames:beforeDate:clientHasTruthForEntityNames:target:selector:] での SyncServices 前提条件の失敗: エンティティが指定されていません

これが何を意味するのか、そしてそれをデバッグする方法を知っている人はいますか? 私はこの SyncServices の初心者です。乾杯!

アップデート

わかりました、syncrospector に表示されましたが、まだ認識されないエラーが発生しています。デーモンでの私の clientdescription が間違っているとはどういう意味ですか? ありがとう。

アップデート

わかりました、私は clientDescription が機能していましたが、これが起動すると:

ZAssert([[ISyncManager sharedManager] registerSchemaWithBundlePath:path], @"同期スキーマの登録に失敗しました");

このエラーが発生します:(

[注: この例外はサーバーで発生しました。] *** -[NSCFArray insertObject:atIndex:]: nil を挿入しようとしました

4

1 に答える 1

0

これは、同期サービスの設定の問題です。これは、どのエンティティを同期する必要があるかを宣言していないことを意味します。SyncSchema サブプロジェクト (デスクトップ アプリ側) を、SampleDesktop プロジェクトに含まれているサブプロジェクトと比較することをお勧めします。

アップデート

私はそれをすべてチェックしましたが、役に立ちませんでした。バージョン管理されたお母さんを使用していますが、違いはありますか? 私の ManagedObjectModels では、バージョンまたはコレクションの名前を使用する必要がありますか? (お母さんですか、それともお母さんですか?) ありがとう、もうすぐ着きます!

いいえ、スキーマは最新のモデルを指している必要があります。それが正しく指していると確信していますか?これは、最もトリッキーなビットの 1 つです。モデルをスキーマ バンドルに含めていますか、それとも参照していますか?

アップデート

まず、これらの更新を質問に入れてください。コメント セクションは実際にはそれらを対象としたものではありません。

よし、この問題を乗り越えた。「クライアントの登録に失敗しました: Xmac という名前のクライアントが、次の名前の認識されていないエンティティを同期しようとしています: X.Entity」これは悲しいことに、すべてのエンティティで発生します。

このエラーは、同期スキーマがまだ完全に有効でないことを意味します。デスクトップ クライアントは同期しますか?

シンクロススペクターでそのデータを見ることができますか?

もしそうなら、デーモンでのクライアントの説明が間違っています。同期しない場合は、SyncSchema バンドルがまだ正しくないように思われるため、まずそれを解決してください。プロジェクトに含まれている sampleDesktop アプリケーションと比較することをお勧めします。

シンクロススペクターを更新する

わかりました、syncrospector に表示されましたが、まだ認識されないエラーが発生しています。デーモンでの私の clientdescription が間違っているとはどういう意味ですか? ありがとう。

シンクロスペクターでは、すべてのエンティティとデータが表示されていると思いますか?

Daemon には clientDescription.plist があります。この plist は、デーモンが同期しようとしているデータを記述します。その plist を更新する必要があります (既定のものはサンプル アプリなどを参照するため)、デスクトップ アプリケーションと同じようにデータ構造を参照するようにします。

近い将来、この部分はプラグインに移動されるため、デーモンを直接変更する必要はありません。今後数週間で、プロジェクト自体の最新情報が公開される予定です。しかし、現時点では (そして再利用可能になります)、デーモン内の plist を変更すると、同期の準備が整うはずです。

ZAssert の更新

その行は次のように展開されます。

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

これは、次のような原因で発生する可能性があります。

  1. あなたのパスは nil です。デバッガで確認してください
  2. 同期スキーマに問題があります。

他にどのようなデバッグ コメントが表示されますか?

于 2010-03-24T14:35:35.680 に答える