2012-04-19 77 views
0

我对新的restkit 10.0中的RKObjectMapping感到困惑。 我已经用RKClient调用了我的webservice,并以JSON的形式得到响应。 现在我想用我的User类来映射JSON字符串。 如何做到这一点?restkit 10.0中的RKObjectMapping映射问题

块引用 { “ID”:2 “显示名”: “吉瑞普山”, “角色”:NULL, “用户名”: “FBUser-123456”, “密码”:“dddddddddddddddd = \ r \ N”, “电子邮件”: “[email protected]”, “性别”: “M”, “生日”:空, “朋友”:空, “bloodGroup”:空, “名字”:空, “姓氏” :NULL, “phoneNumber的” 日期null}

我试图与下面的代码:

RKObjectMapping * userMapping = [RKObjectMapping mappingForClass:[用户类]]; [userMapping mapKeyPath:@“id”toAttribute:@“userId”];

[userMapping mapKeyPath:@"displayName" toAttribute:@"displayName"]; 
[userMapping mapKeyPath:@"userName" toAttribute:@"userName"]; 
[userMapping mapKeyPath:@"password" toAttribute:@"password"]; 
[userMapping mapKeyPath:@"email" toAttribute:@"email"]; 
[userMapping mapKeyPath:@"gender" toAttribute:@"gender"]; 
[userMapping mapKeyPath:@"birthDate" toAttribute:@"birthDate"]; 
[userMapping mapKeyPath:@"bloodGroup" toAttribute:@"bloodGroup"]; 
[userMapping mapKeyPath:@"firstName" toAttribute:@"firstName"]; 
[userMapping mapKeyPath:@"lastName" toAttribute:@"lastName"]; 

[userMapping mapKeyPath:@"phoneNumber" toAttribute:@"phoneNumber"]; 

[[RKObjectManager sharedManager].mappingProvider setMapping:userMapping forKeyPath:@"user"]; 

但是,我怎么映射JSON字符串RKObjectMapping?

回答

0

如果您在您的JSON的根级别用户,下面应该工作:

RKObjectManager *manager = [RKObjectManager sharedManager]; 
RKManagedObjectMapping *userMapping = [RKManagedObjectMapping mappingForClass:[User class] inManagedObjectStore:manager.objectStore]; 
[userMapping mapKeyPath:@"id" toAttribute:@"userId"]; 
[userMapping mapAttributes:@"displayName",@"userName",@"password", nil]; // Add other attributes 
[manager.mappingProvider setMapping:userMapping forKeyPath:@""]; 
0

你缺少这一行:
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"" delegate:self];

然后执行类似的委托方法:
(void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects{ NSLog(@"Objects Retrieved: %d\n%@", objects.count, objects);
YourObject* obj = [objects objectAtIndex:0];

NSString* info = [NSString stringWithFormat: 
        @"Value 1 is %@\n" 
        @"Value 2 is %@\n" 
        @"Value 3 is: %@", 
        [obj value1], 
        [obj value2], 
        [obj value3]; 

}`

希望这对你有用。 XD