MappingProvider的errorMapping总是失败:找不到keyPath的对象映射:''

时间:2012-11-02 19:02:48

标签: iphone ios restkit

我在映射API错误时遇到了困难。我正在使用这样的块加载请求:

[self.objectManager loadObjectsAtResourcePath:resourcePath usingBlock:^(RKObjectLoader *loader) {
    loader.onDidLoadObjects = ^(NSArray *objects) {
        // ...
    };
    loader.onDidFailLoadWithError = ^(NSError *error) {
        // ...
    };
    loader.onDidFailWithError = ^(NSError *error) {
        // ...
    };
}];

在服务器端,例如,如果我尝试使用错误的用户名/密码验证用户,我的API将返回错误并采用以下格式:

{ "error":
    {"code":"401",
    "message":"Wrong username etc. etc."}
}

object mapping docs我找到了以下内容:

  

RKErrorMessage

     

一个简单的类,用于映射服务器端错误消息   返回NSError对象[...]初始化RKObjectManager时,   对象映射从“错误”和“错误”keyPaths到实例   RKErrorMessage已在映射提供程序中注册。这提供了   开箱即用的映射支持简单的错误消息。 [...]

我自动将其解释为对象加载器将相应地映射任何“错误”og“errors”keyPath,并且将调用didFailWithError :(或block)。但情况并非如此。每次从API加载错误响应时都会收到此错误:

  

添加映射错误:无法找到keyPath的对象映射:''

我尝试了this questionsthis question的解决方案,但结果是一样的。

我知道json是从我的API加载的,我在调试器中跟踪了它。此外,如果我创建一个RKObjectMapping并将其映射到“error”keyPath,则使用Error对象触发onDidLoadObjects块,但这不是我打算做的。

长话短说,我的目标是每当我的API返回“error”keyPath时,让RestKit触发onDidFailWithError块。

1 个答案:

答案 0 :(得分:0)

根据您的问题,我会假设您的服务器出现2xx状态代码的错误响应问题。

其他可能性是使用你提到的文档之前的RK版本,或者你可能发现了一个错误:)