我在映射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 questions和this question的解决方案,但结果是一样的。
我知道json是从我的API加载的,我在调试器中跟踪了它。此外,如果我创建一个RKObjectMapping并将其映射到“error”keyPath,则使用Error对象触发onDidLoadObjects块,但这不是我打算做的。
长话短说,我的目标是每当我的API返回“error”keyPath时,让RestKit触发onDidFailWithError块。
答案 0 :(得分:0)
根据您的问题,我会假设您的服务器出现2xx状态代码的错误响应问题。
其他可能性是使用你提到的文档之前的RK版本,或者你可能发现了一个错误:)