0

我在映射我的 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."}
}

对象映射文档中,我发现了以下内容:

RKErrorMessage

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

我将其解释为对象加载器会自动映射任何“错误”和“错误”键路径,并且 didFailWithError: (或块)将被调用。但是,情况并非如此。每次从 API 加载错误响应时,我都会收到此错误:

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

我已经尝试过这个问题这个问题的解决方案,但结果是一样的。

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

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

4

1 回答 1

0

根据您的问题,我认为问题出在您的服务器上,错误响应为 2xx 状态码。

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

于 2013-07-25T17:18:20.700 回答