これは、同期サービスの設定の問題です。これは、どのエンティティを同期する必要があるかを宣言していないことを意味します。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");
これは、次のような原因で発生する可能性があります。
- あなたのパスは nil です。デバッガで確認してください
- 同期スキーマに問題があります。
他にどのようなデバッグ コメントが表示されますか?