【问题标题】:Restkit 0.20 NSDictionary returned instead of mapped objectsRestkit 0.20 NSDictionary 返回而不是映射对象
【发布时间】:2013-01-26 22:17:47
【问题描述】:

我使用的是restkit 0.20,而从GET返回的对象不是Category类型而是NSDictionary?

这是我的模型

 

#import <Foundation/Foundation.h>

@interface Category : NSObject 

@property (nonatomic, copy) NSString* identifier;
@property (nonatomic, copy) NSString* description;
@property (nonatomic, copy) NSString* name;

@end

json

 

    [
      {
        "category": {
          "_id": "50fc579d81d79d4db0000001",
          "name": "Category 0"
        }
      },
      {
        "category": {
          "_id": "50fc579d81d79d4db0000006",
          "name": "Category 0"
        }
      } 
    ]

映射 <pre></pre>

RKObjectMapping *categoryMapping = [RKObjectMapping requestMapping];
[categoryMapping addAttributeMappingsFromDictionary:@{@"category._id": @"identifier", @"category.name": @"name"}];
[objectManager addRequestDescriptor: [RKRequestDescriptor requestDescriptorWithMapping:categoryMapping objectClass:[Category class] rootKeyPath:nil]];
RKResponseDescriptor *categoryResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:categoryMapping pathPattern:@"/categories" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:categoryResponseDescriptor];

如果我调用 [RKObjectManager.sharedManager getObjectsAtPath:@"/categories",我会返回一个数组 :) 但对象不是 Category 类型,而是 NSDictionary。

NSLog(@"%@",[猫类]); 2013-01-26 12:01:17.247 应用程序[18943:c07] __NSDictionaryM

如果我调用 dat.name,应用程序将崩溃

【问题讨论】:

    标签: objective-c restkit


    【解决方案1】:

    是的,返回的对象总是字典,你应该将它们映射到一个类:

    Category* c= [Category new];
    c.identifier= dict[@"_id"];
    c.name= dict[@"name"];
    

    每个字典都取自你得到的数组。

    【讨论】:

    • 但在以前版本的 RestKit 中,我总是返回一个 Category 对象的 NSArray,文档还说..
    【解决方案2】:

    哎呀

    
    
        RKObjectMapping* catMapping = [RKObjectMapping requestMapping];
    
    

    我正在使用

    
    
        RKObjectMapping* catMapping = [RKObjectMapping mappingForClass:[Category class]];
    
    

    我又来了 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-02
      • 2013-05-25
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多