如何在 iOS 中使用 RestKit 2.X?
Posted
技术标签:
【中文标题】如何在 iOS 中使用 RestKit 2.X?【英文标题】:How use RestKit 2.X in iOS? 【发布时间】:2013-10-22 04:02:49 【问题描述】:我是使用 RestKit 的新手,但我完全不明白它是如何工作的...... 请问,有什么地方可以解释一下吗??
我的 Json 文件是:
"colors":
"red":"#f00",
"green":"#0f0",
"blue":"#00f",
"cyan":"#0ff",
"magenta":"#f0f",
"yellow":"#ff0",
"black":"#000"
我托管此文件的路径是:http://186.36.181.116/tesis/file.json
我在 ViewDidLoad 方法中尝试的代码是:
- (void)viewDidLoad
[super viewDidLoad];
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[colores class]];
[mapping addAttributeMappingsFromArray:@[@"colors"]];
NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:@"/tesis/:coloresID" keyPath:@"colors" statusCodes:statusCodes];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://186.36.181.116/tesis/file.json"]];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]];
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result)
colores *colores = [result firstObject];
NSLog(@"Mapped the article: %@", colores);
failure:^(RKObjectRequestOperation *operation, NSError *error)
NSLog(@"Failed with error: %@", [error localizedDescription]);
];
[operation start];
我的班级“颜色”如下:
#import <Foundation/Foundation.h>
@interface colores : NSObject
@property (weak, nonatomic) IBOutlet NSString *colores;
@end
非常感谢您!
【问题讨论】:
根据您的 JSON 和 URL,映射和响应描述符错误/不匹配。尝试将键/值对字典映射到一组对象也需要特殊处理,因为键都是任意的(除非它们是静态的)。我建议您从更简单的 JSON 开始,然后逐步完成... 【参考方案1】:你可以找到详细的教程here和完整的源代码github。
为了正确地将响应映射到 JSON,我们必须做以下事情:
*为我们的托管对象模型中的每个实体创建一个 RKEntityMapping 实例 *在 JSON 响应键和对象属性之间添加映射 *添加嵌入式 JSON 对象和关系之间的映射 *使用映射创建响应描述符 *可选:如果您打算 PUT 或 POST,请使用映射创建请求描述符
【讨论】:
谢谢,我会读,但想尝试运行上面的代码,但谢谢。以上是关于如何在 iOS 中使用 RestKit 2.X?的主要内容,如果未能解决你的问题,请参考以下文章
RestKit iOS 教程 - Xcode 无法识别 RestKit 类方法 - 缺少框架?
iOS 和 RestKit:如何正确获取 text/html 响应?