如何在 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:当值无效时如何拒绝整个映射

RestKit iOS 教程 - Xcode 无法识别 RestKit 类方法 - 缺少框架?

iOS 和 RestKit:如何正确获取 text/html 响应?

你如何在 RestKit 0.20 中使用 RKDotNetDateFormatter?

iOS:RESTKit 与 CoreData 同步数据

如何从 Restkit + iOS 发布到 Rails