【问题标题】:Restkit, mapping, not getting all valuesRestkit,映射,未获取所有值
【发布时间】:2013-10-08 01:49:18
【问题描述】:

我想通过 restkit 加载以下 JSON。我正在使用 Restkit 0.2.3。

JSON 数据:

{
    "meta": {
        "limit": 25,
        "cache-expiry": 3600
    },
    "objects": [
        {
            "name": "TREATmachine",
            "locality": "San Francisco",
            "street_address": "20th & Morrison S.E.",
            "cuisines": [
                "vegan",
                "european"
            ],
            "region": "CA",
            "phone": "(503) 308-8851",
            "postal_code": "94110",
            "categories": [
                "other",
                "restaurant"
            ],
            "has_menu": true,        
        }
    ]
}

现在我声明这个类来处理所有元素

@property (nonatomic, retain) NSString* name;
@property (nonatomic, retain) NSString* locality;
@property (nonatomic, retain) NSString* street_address;
@property (nonatomic, retain) NSArray * cuisines;
@property (nonatomic, retain) NSString* region;
@property (nonatomic, retain) NSString* phone;
@property (nonatomic, retain) NSString* postal_code;
@property (nonatomic, retain) NSArray * categories;
@property (assign) BOOL has_menu;

现在映射就这样完成了,

RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Location class]];
[mapping addAttributeMappingsFromArray:@[@"name",@"locality", @"street_address", @"region",   
      @"phone", @"postal_code", @"country", @"lat", @"website_url", @"resource_uri"]];
[mapping addAttributeMappingsFromDictionary:@{ @"venueID": @"id"}];

之后我创建了一个

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor   
        responseDescriptorWithMapping:mapping method:RKRequestMethodGET pathPattern:@"/Locations 
        /search/" keyPath:@"objects" statusCodes:statusCodeSet];

它在获取数据方面工作正常,但我遇到的问题是我总是得到一个空对象,其中没有数据。

我没有收到失败或错误消息,只是空对象。

我错过了什么?

编辑:放入响应描述符代码。

【问题讨论】:

  • 显示响应描述符的详细信息。
  • 嗨,我用我的描述符更新了问题
  • 您是否打开了映射的跟踪日志以查看发生了什么?
  • 你明白了,我有点搞砸了我的映射但是通过记录它我发现了这个问题,你太棒了,非常感谢,我不知道如何让你的评论成为答案。

标签: ios restkit restkit-0.20


【解决方案1】:

从@Wain 获得日志记录的好主意后,我将以下代码添加到我的视图控制器中

  RKLogConfigureByName("RestKit", RKLogLevelWarning); 
  RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace);
  RKLogConfigureByName("RestKit/Network", RKLogLevelTrace);

它基本上告诉我我没有正确映射我的数据。

我不知道人们是否有关于跟踪级别映射代码应该放在哪里的建议?如在哪个文件中?应用代理?

【讨论】:

  • 我通常有一个单例数据控制器,我的映射和配置都放在那里。
猜你喜欢
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多