【发布时间】:2012-11-02 19:02:48
【问题描述】:
我在映射我的 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 时, 从 "error" 和 "errors" keyPaths 到实例的对象映射 RKErrorMessage 已向映射提供程序注册。这提供了 对简单错误消息的开箱即用映射支持。 [...]
我解释为对象加载器会自动映射任何“错误”和“错误”键路径,并且 didFailWithError: (或块)将被调用。但是,情况并非如此。每次从 API 加载错误响应时,我都会收到此错误:
添加映射错误:找不到 keyPath 的对象映射:''
我尝试了this questions和this question的解决方案,但结果是一样的。
我知道 json 是从我的 API 加载的,我已经在调试器中对其进行了跟踪。另外,如果我创建一个 RKObjectMapping 并将其映射到“错误”keyPath,onDidLoadObjects 块会被一个错误对象触发,但这不是我打算做的。
长话短说,我的目标是让 RestKit 在我的 API 返回“错误”keyPath 时触发 onDidFailWithError 块。
【问题讨论】: