1

私は次のモデルを持っています:

@interface EquipmentModel : NSManagedObject

@property (nonatomic, retain) NSDate * creationDate;
@property (nonatomic, retain) NSString * desc;
@property (nonatomic, retain) NSNumber * identifier;
@property (nonatomic, retain) NSDate * lastModifiedDate;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * manufacturerID;
@property (nonatomic, retain) Manufacturer *manufacturer;

RESTKit と次のマッピングを使用して、そのオブジェクトをフェッチします。

RKEntityMapping *equipmentModelMapping = [RKEntityMapping mappingForEntityForName:@"EquipmentModel" inManagedObjectStore:managedObjectStore];
equipmentModelMapping.identificationAttributes = @[@"identifier"];
[equipmentModelMapping addAttributeMappingsFromDictionary:@{
 @"id": @"identifier",
 @"description": @"desc",
 @"manufacturer_id": @"manufacturerID",
 @"creation_date": @"creationDate",
 @"last_modified_date": @"lastModifiedDate",
 }];
[equipmentModelMapping addAttributeMappingsFromArray:@[ @"name"]];
[equipmentModelMapping addConnectionForRelationship:@"manufacturer" connectedBy:@{ @"manufacturerID": @"identifier"}];

ただし、モデルの前にメーカーがフェッチされない場合があるため、 getObjectsAtPath呼び出しが完了すると、モデルの「メーカー」関係は nil になります。製造元 ID を一時的ではないものにしたので、引き続き保存します。その場合、どうすれば関係を更新できますか?

1 つの可能性は、メーカーが取得した後にモデルを取得することです。ただし、より複雑な他のオブジェクトがあり、そのようなアプローチは機能せず、効率的ではありません。そのIDに基づいてCoreDataで関係をリンクするにはどうすればよいですか?!

どうもありがとう!

4

1 に答える 1

0

提案された解決策は正しいです。接続されていないモデルのみが返されるようにフェッチを述語する方法を選択したいだけです。処理するアイテムが多数ある場合は、フェッチ、更新、および保存をバッチ処理することもできます。この場合、Core Data または RestKit に関係を持たせる方法はありません。

于 2013-07-05T07:35:34.420 に答える