【问题标题】:do i need to create mapping for all objects of json that i get?我需要为我得到的所有 json 对象创建映射吗?
【发布时间】:2015-02-19 07:45:13
【问题描述】:

我对休息套件有疑问。

我需要为我得到的所有 json 对象创建映射吗?或者我只能为其中一些对象提供映射,即使我没有为从 Internet 加载的某些对象创建映射,restkit 也能正常工作?

例如有这个类

@interface RKAUser : NSObject

@property (strong, nonatomic) NSString* nameString;

@property (strong, nonatomic) RKCard* card;

@end



@interface RKACard : NSObject

@property (strong, nonatomic) NSString* numberString;

@end



+ (RKMapping *)userMapping {
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKAUser
 class]];

    [mapping addAttributeMappingsFromArray:@[@"nameString"]];

    return mapping;
}

我有 json,其中包含大约 20 个用户的信息 在这个 json 中有所有的用户信息,包括 nameString 和他的卡 numberString。

但我只为nameString创建映射,并没有为卡创建映射

这个例子的问题是这个代码是否可以工作,或者它可能会因为我没有提供所有映射而崩溃

另一个问题

我可以使用 restkit 来映射任何 json 信息吗? 信息是否应该绝对来自某种休息服务器或休息套件可以映射来自任何服务器的json信息?如果信息不是来自服务器,它会起作用吗?

【问题讨论】:

  • 试一试,看看会发生什么......
  • 是的,我可以测试一下。并会看到会发生什么。但是对于这种情况,它需要能够在没有服务器的情况下使用 rest kit。看起来可以在没有服务器的情况下使用休息套件

标签: ios objective-c rest restkit


【解决方案1】:

您只需要实现在创建映射时使用的属性。

JSON 不需要来自服务器。您可以获取任何 JSON 文档,然后自行解析并使用 RKMapperOperation 处理结果。

RKMapperOperation *operation = [[RKMapperOperation alloc] initWithRepresentation:parsedJSON mappingsDictionary:yourMappingsDictionary];
NSError *error = nil;
[operation execute:&error];
if (!error) {
   NSArray *result = mapper.mappingResult.array;
}

【讨论】:

  • 感谢您的快速回答,这个 parsedJSON 可以是包含其他字典数组的字典吗?喜欢我做code NSString * dataString=[[NSString alloc]initWithData:receivedData encoding:NSUTF8StringEncoding]; NSDictionary *parsedJSON =[dataString JSONValue]; 时的结果
  • 关于实现属性。你的意思是@synthesize 它们还是为它们创建映射?
  • 对于 JSON,需要 NSDictionary 或 NSArray 来表示。您不必@synthesize 属性,如果您在映射中使用它们,只需要定义它们。在您的示例中,您使用了nameString,因此您的用户类中需要nameString 属性。
猜你喜欢
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多