iOSRestkit関連の質問があります。リモートサーバーからの親子関係データがあり、それらのオブジェクトNSManagedObject
をRestkitを使用してオブジェクトにマップします。私が現在抱えている問題は、サーバーへのすべてのリクエストが常に「子」関係を一掃し、サーバーからの新しいデータに置き換えることです。それらを回避し、代わりに新しい子を追加する方法はありますか?
例:従来のカテゴリ->製品の関係があります。
{"categories": [ { "cat_id": "1", "cat_title": "category 1", "cat_tag": 1, "product": [ { "prod_id": "1", "prod_name": "product 1", "prod_tag": 1 }, { "prod_id": "2", "prod_name": "product 2", "prod_tag": 1 } ] } ] }
そしてそれはうまく機能し、CoreDataの関係ですべてが適切に保存されます。しかし、サーバーに別のリクエストを行い、新しい応答がある場合:
{"categories": [ { "cat_id": "1", "cat_title": "category 1", "cat_tag": 1, "product": [ { "prod_id": "3", "prod_name": "product 3", "prod_tag": 1 }, { "prod_id": "4", "prod_name": "product 4", "prod_tag": 1 } ] } ] }
データベースの製品1と製品2を製品3と製品4に置き換えます。すべての関係と主キーを正しく設定したと確信しています。(cat_id
とprod_id
は主キーとして設定されます)。
RestKitの内部フレームワークを調べてみるline 576
と、RKObjectMappingOperation
クラスの周りに次のようなものがあることに気づきました。
RKLogTrace(@"Mapped NSSet relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath, destinationObject); NSMutableSet *destinationSet = [self.destinationObject mutableSetValueForKey:relationshipMapping.destinationKeyPath]; [destinationSet setSet:destinationObject];
だから私はそれを変えるのは簡単だと思います
[destinationSet setSet:destinationObject];
に
[destinationSet addObjectsFromArray:[destinationObject allObjects]]
しかし、私はそれを行うためのより良い方法があるかどうか疑問に思っていましたか?
乾杯、