2

したがって、この回答を読んだ後、私のケースがどのように異なるかはわかりませんが、提案されたソリューションはRestKit 0.20.3では機能しないようです

次の json の場合:

{
   "photos": [
      "872ac577-3f31-47a0-966e-6f2ed2fbabcd"
     ],
   "imageUrl": [
      "http://domain/WebAPI/FileUpload/10232013629_21382571406.439790.jpeg"
     ]
}

次のオブジェクトへのマッピング:

@class Picture, Site, Survey;

@interface Job : NSManagedObject

@property (nonatomic, retain) NSString * jobId;
@property (nonatomic, retain) NSString * jobName;
@property (nonatomic, retain) NSString * jobStatusId;
@property (nonatomic, retain) NSString * jobStatus;
@property (nonatomic, retain) NSString * projectId;
@property (nonatomic, retain) NSString * projectType;
@property (nonatomic, retain) NSString * siteId;
@property (nonatomic, retain) NSSet *surveys;
@property (nonatomic, retain) NSSet *photos;
@property (nonatomic, retain) NSDate *createdDate;
@property (nonatomic, retain) Site *site;
@end

次のようなオブジェクトはどこphotosにありますか。Picture

@interface Picture : NSManagedObject
@property (nonatomic, retain) NSData * data;
@property (nonatomic, retain) NSString * photoId;
@property (nonatomic, retain) NSString * pictureLoc;
@property (nonatomic, retain) NSString * imageUrl;
@property (nonatomic, retain) Job *job;
@property (nonatomic, retain) QuestionAnswer *question;
@end

photosimageUrlをとにそれぞれマッピングしたいと思いPictureます。のマッピングで次を使用できると思いました。photoIdimageUrlJob

RKEntityMapping *ret = [RKEntityMapping mappingForEntityForName:@"Job" inManagedObjectStore:[RKObjectManager sharedManager].managedObjectStore ];

[ret addAttributeMappingsFromDictionary: @{
                                           @"photos": @"photos.photoId",
                                           @"imageUrl": @"photos.imageUrl",
                                           }];

ただし、マップされたプロパティJobには常に何もありません。photos

retJSONは問題なくマッピングできる他の多くのキーを含むスニペットであるため、中間のすべてのステップを正しく実行していることを知っています(実際にマッピングに使用するなど)。私は何を間違っていますか?教えてください

編集

ウェインの回答に従ってマッピングコードを変更しました:

RKEntityMapping *ret = [RKEntityMapping mappingForEntityForName:@"Job" inManagedObjectStore:[RKObjectManager sharedManager].managedObjectStore ];
RKEntityMapping *subMapping = [RKEntityMapping mappingForEntityForName:@"Picture" inManagedObjectStore:[RKObjectManager sharedManager].managedObjectStore ];

[subMapping addAttributeMappingsFromDictionary: @{
                                           @"photos":@"photoId",
                                           @"imageUrl":@"imageUrl"
                                           }];


[ret addPropertyMapping:[RKRelationshipMapping
                         relationshipMappingFromKeyPath:nil 
                         toKeyPath:@"photos" 
                         withMapping:subMapping]];

そして今、私はPictureオブジェクトを追加しましたが、nilforphotoIdimageUrl(そして、はい、JSON キーのスペルと大文字が正しいことを確認するためにチェックしました)

4

1 に答える 1