阅读this answer所以经过测绘串,我不看我的情况是怎样的任何不同,但所提出的解决方案似乎并不在RestKit 0.20.3RestKit 0.20阵列
工作对于以下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
我想将photos
和imageUrl
映射到分别Picture
的photoId
和imageUrl
。我以为我可以用我的Job
的映射如下:
RKEntityMapping *ret = [RKEntityMapping mappingForEntityForName:@"Job" inManagedObjectStore:[RKObjectManager sharedManager].managedObjectStore ];
[ret addAttributeMappingsFromDictionary: @{
@"photos": @"photos.photoId",
@"imageUrl": @"photos.imageUrl",
}];
然而,映射Job
始终没有在photos
财产结束。
我知道我正在做正确的所有中间步骤(比如实际使用ret
进行映射),因为JSON是一个包含许多其他密钥的片段,我可以在没有任何问题的情况下进行映射。我究竟做错了什么?请告诉我
编辑
改变映射代码按北斗七星的回答是:
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
对象,但nil
为photoId
和imageUrl
(是的,我检查过以确保我的拼写和大小写正确的JSON键)
仍然无法捕获值,请参阅上文。作为附注,如果'photos'中有4个对象,则只创建1个'Picture' – StaRbUck42
您所做的更改与我所建议的不同 - 因为它不起作用。 RestKit无法以这种方式映射多个数组。你有什么可以做的照片编号,但没有和图像的网址。唯一明智的做法是更改JSON或将数组映射到Job作品实体中的数组属性。 – Wain
是的,我最终将JSON改为将'photoId'和'imageUrl'数组合并为一个具有'photoId'和'imageUrl'的对象数组作为属性 – StaRbUck42