我想在我的iOS應用程序映射JSON與RestKit 0.20核心數據對象的映射。 我有兩種類型的對象:用戶和消息。用戶有很多消息。消息包含指向用戶的字段'from'和'to'。 這裏是我的消息JSON:Restkit - 只有子ID
[
{
"created_at":1358265482867,
"to":"50ed7b4e63e9b80200000009",
"note":"Hello",
"from":"50ee98365315d00200000003",
"_id":"50f57cee11f2b00200000016",
"__v":0
},
{
"created_at":1358265582867,
"to":"50ed7b4e63e9b80200000009",
"note":"Hello 2",
"from":"50ee98365315d00200000003",
"_id":"50f57cee11f2b00200000016",
"__v":0
}
]
我的映射代碼如下所示:
// Object mappings
RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:@"User" inManagedObjectStore:managedObjectStore];
userMapping.identificationAttributes = @[@"userId"];
[userMapping addAttributeMappingsFromDictionary:@{
@"_id": @"userId",
@"name": @"name",
@"note": @"headline",
@"photo_url": @"photoUrl"
}];
RKEntityMapping *messageMapping = [RKEntityMapping mappingForEntityForName:@"Message" inManagedObjectStore:managedObjectStore];
messageMapping.identificationAttributes = @[@"messageId"];
[messageMapping addAttributeMappingsFromDictionary:@{
@"_id": @"messageId",
@"note": @"note",
@"created_at": @"createdAt",
@"from": @"from",
@"to" : @"to"
}];
// !!! This code is ok if json contains entire object (but contains only id).
// [messageMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"from" toKeyPath:@"from" withMapping:userMapping]];
// [messageMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"to" toKeyPath:@"to" withMapping:userMapping]];
RKEntityMapping *messageReversedMapping = [messageMapping inverseMapping];
RKRequestDescriptor *requestDescription = [RKRequestDescriptor requestDescriptorWithMapping:messageReversedMapping objectClass:[Message class] rootKeyPath:nil];
[objectManager addRequestDescriptor:requestDescription];
RKResponseDescriptor *userResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:userMapping pathPattern:@"/users" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:userResponseDescriptor];
RKResponseDescriptor *messageResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:messageMapping pathPattern:@"/messages" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:messageResponseDescriptor];
型號代碼:
@interface Message : NSManagedObject
@property (nonatomic, retain) NSString * note;
@property (nonatomic, retain) NSNumber * createdAt;
@property (nonatomic, retain) NSString * messageId;
@property (nonatomic, retain) User *from;
@property (nonatomic, retain) User *to;
@interface User : NSManagedObject
@property (nonatomic, retain) NSString * email;
@property (nonatomic, retain) NSString * headline;
@property (nonatomic, retain) NSString * lastName;
@property (nonatomic, retain) NSNumber * me;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * photoUrl;
@property (nonatomic, retain) NSString * userId;
@property (nonatomic, retain) Message *messagesFrom;
@property (nonatomic, retain) Message *messagesTo;
的問題是,在JSON,領域 「到」 和「從「是用戶的ID而不是嵌套的對象,所以應用程序崩潰。
我已經發現了類似的做題,但仍然不能使它發揮作用。
Mapping nested IDs with RestKit in Xcode using Objective-C
Mapping relationships in RestKit through an array of IDs doesn't work
誰能幫我設置映射正確,那麼JSON將只包含用戶的ID和不嵌套的對象嗎?