【问题标题】:MappingProvider's errorMapping always fails with: Could not find an object mapping for keyPath: ''MappingProvider 的 errorMapping 总是失败:找不到 keyPath 的对象映射:''
【发布时间】: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 块。

【问题讨论】:

    标签: iphone ios restkit


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-04
      • 1970-01-01
      • 2015-05-16
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 2021-03-21
      • 1970-01-01
      相关资源
      最近更新 更多