【问题标题】:restkit mapping and validate responserestkit 映射和验证响应
【发布时间】:2012-11-07 15:27:28
【问题描述】:

这是我第一次使用 restkit,我对自动映射感兴趣(以后可能还会对与 CoreData 的集成)。

目前我设法执行一个 GET 请求并将响应映射到一个简单的对象,代码如下:

RKObjectMapping *myMapping = [[self class] objectMappingForClass:[MyClass class]];
[myMapping mapKeyPath:@"Name" toAttribute:@"name"];
[myMapping mapKeyPath:@"Value" toAttribute:@"value"]; 

....

+ (RKObjectMapping*)objectMappingForClass: (Class)class
{
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:class];
mapping.rootKeyPath = @"Data";

mapping.performKeyValueValidation = NO;
//  mapping.ignoreUnknownKeyPaths = YES;
mapping.setNilForMissingRelationships = YES;
mapping.setDefaultValueForMissingAttributes = YES;

return mapping;
}

我是这样从服务器获取数据的:

RKObjectMapping *defaultPropertiesMapping = [self.objectManager.mappingProvider objectMappingForClass:[MyClass class]];

RKObjectLoader *request = [self.objectManager loaderWithResourcePath:GetDefaultPropertiesURL];
request.objectMapping = defaultPropertiesMapping;

RKResponse *response = [request sendSynchronously];

问题在于,对于响应,服务器不使用 HTTP 状态,而是 JSON 有效负载中的一个属性(有效负载类似于: { "Status" : "OK", "Data" : { //real payload } }

如何检查 Status 属性??

【问题讨论】:

    标签: ios restkit


    【解决方案1】:

    如果将对象加载器委托设置为发送请求的类,则可以实现以下方法:

    - (void)objectLoader:(RKObjectLoader *)loader willMapData:(inout __autoreleasing id *)mappableData; {
      if([*mappableData valueForKey:@"Status"] isEqualToString:@"OK"){
        // Do something
      }
    }
    

    然后您可以检查状态的值并相应地处理响应。在对象映射到 Core Data 之前调用此方法。另外,请确保您的类采用 RKObjectLoaderDelegate 协议,否则这将不起作用。

    如果您想从响应中删除数据,请使用以下方法:

    [*mappableData removeObjectForKey:@"Data"];
    

    从 *mappableData 中删除的任何键都不会进入对象映射器。

    【讨论】:

    • 谢谢。我不明白一件事......如果状态是好的,我想继续映射(我认为返回方法是好的..),但是我怎样才能停止映射(在上面的else中) ?
    • 所以..这个想法是,如果状态不正确,则删除(如果存在)数据属性,这样映射就会失败......我还有一些......问题......分页结果,但我稍后会处理它。谢谢您的回答..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2014-08-13
    相关资源
    最近更新 更多