我在映射我的 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 块。