2017-01-27 11 views
0

CoreDataを搭載したiOSのSimperiumで現在問題が発生しています。初めてアプリケーションを起動すると、SimperiumはCoreDataとの同期を試みます。Simperium iOS CoreDataの関係無作為にヌル

時には正しく動作し、サーバー上のSimperiumのデータにもかかわらず、関係の一部を「無し」に設定することはありません。これは、アプリケーション全体を再インストールしない限り、決して修正されません。そして、私はサイコロをもう一度動かして、スタートアップ時に関係が適切にリンクされているかどうかを確認します。

これでパターンが見つかりません。無関係な関係は完全にランダムです。時には、ここのこのエンティティには無関係の関係があり、次回試してみると別のエンティティには無関係の関係があります。

すべての関係はオプションで、CoreDataファイルに問題はありません。

誰かにこのような問題がありましたか?私は2014年のバグでまったく同じ問題を発見しましたが、それ以来ずっと続いています。私が午前

正確に同じ問題がここで見つけることができます:https://github.com/Simperium/simperium-ios/issues/250

サイド注:あなたがその問題を読めば、彼はまた、nilの関係を引き起こし、彼はSimperiumが同期されている間CDファイルを編集するに問題があることを明確に。誰かがこの事件を確認したのですか?もしそうなら、これは私の問題かもしれません。

答えて

2

非常にこの不具合は、あなたが記述したシナリオ(Simperiumが同期している間にCDファイルを編集すること)に起因する可能性が高いです。

コアデータは内部的にデータの整合性を維持するためのロックを処理します。 SQLストレージに直接アクセスすると、データが破損する可能性があります(私は、Firefoxプラグイン、シミュレータ、ファイルシステムAPI経由でファイルにアクセスしていると仮定しています)。

コアデータのsqliteファイルに直接アクセスしないで問題を再現してください(常にNSPersistentStoreCoordinator/NSManagedObjectContextを経由してください)。

あなたが成功し、効果的にバグがある場合は、修正することが大好きです! (その場合は、可能な限り多くの詳細を含めてthe main repositoryの問題を開いてください)。

Simperiumにご関心をお寄せいただきありがとうございます。

+0

テーブル(NSManagedObjectContextなど)を変更するために適切なCDクラスを使用していることを明確にする必要があります。文字通りデータを直接変更するわけではありません。 これはまだ問題であると思いますか? – lespommes

+0

その場合、問題はありません(MainMOCまたは派生物を介してデータを更新するが、直接WriterMOCにデータを更新しない限り)。 –

+0

是非、問題を開いてください。できるだけ多くの詳細を使用することができます(サンプルコード//データベース設計は非常に役立ちます)。ありがとう!! –