0

基本的に、外部キーが null になった場合 (値が設定された後)、コア データの関係はリセットされません。

例として、次の 1 対多の関係を取り上げます。 contact <<---> company (contact には 1 つの会社があり、company には多くの連絡先があります)

Restkit の次のメソッドを使用して両方向にマッピングされます。

RKRelationshipMapping *contactCustomerRelationshipMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:@"contacts" toKeyPath:@"hasContacts" withMapping:contactResponseMapping];
[customerResponseMapping addPropertyMapping:contactCustomerRelationshipMapping];
[contactResponseMapping addConnectionForRelationship:@"forCustomer" connectedBy:@{@"companyID" : @"identifier"}];

次に、連絡先がコア データとリモート サーバーの両方で会社にリンクされていると仮定すると、JSON は次を返します: company_id = 123 これは、コア データの関係に正しくマッピングされます。

ただし、リレーションシップが null に設定されている場合、GET 連絡先の応答で返される JSON は次のように返されます。

'contact': {
....
address = "20 Wordworth Ave";
city = "<null>";
"company_id" = "<null>";
...
}

その後、company_id はコア データ エンティティで正しく設定されますが、リレーションシップ接続マッパーはリレーションシップを介して ID 123 を持つ会社への参照を削除しません。そのため、Restkit は外部キーの null 値を Core Data の関係に適用していないようです。

これは company_id が null にリセットされた場合にのみ発生し、値が別の company_id に変更された場合には発生しないことを確認しました。

問題を解決する方法について何か提案があれば教えてください。(現在、company_id のセッターを実装し、null の場合は関係を手動でリセットすることを考えています)

どうもありがとう!


私は最新の Restkit 開発ブランチを使用しています (これは 0.21.0 としてタグ付けされています - 現在最新のリリースは 0.20.3 ですが、ブレイク ワッターズは、開発ブランチは既にタグ付けされているが、ドキュメントを準備する時間がなかったと私に言いました)実際にココアポッドを使用しており、次の行で最新の開発リリースを含めています: pod 'RestKit', :head

4

1 に答える 1