ios - 如何在 Swift 上使用 RESTKIT 处理 JSON 的 Null 映射

标签 ios json restkit

当从我的服务器收到包含空值(在 JSON 响应中)的答案时,RestKit 内部映射在处理空值时崩溃。

有什么办法可以克服这个问题吗?

我尝试扩展 NSNull 以包含“缺失”的方法,但这不起作用并且似乎是错误的。

以下是我的映射和目标代码以及 Restkit 输出:

对象映射:

var tempmapping = RKObjectMapping(forClass: PRLAUser.classForCoder())
        tempmapping.addAttributeMappingsFromDictionary([
            "firstName" : "firstName",
            "secondName" : "lastName",
            "email" : "email",
            "id" : "prlaToken"

            ])

目标代码 - 至少是被映射的变量:

var email : String?
var firstName : String?
var lastName : String?


var prlaToken : String?

崩溃日志:

Parola[6138:3119821] -[NSNull length]: unrecognized selector sent to instance 0x197b86ba0

2015-01-20 15:53:37.973 Parola[6138:3119821] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[NSNull length]:无法识别的选择器发送到实例 0x197b86ba0” * 首先抛出调用堆栈: (0x1867fa59c 0x196f040e4 0x186801664 0x1867fe418 0x186702b6c 0x100707964 0x100023dc8 0x187605b10 0x1000a34a0 0x1000a4078 0x1000 a99d4 0x1000a8dfc 0x10009a8f4 0x1000995a8 0x10009bbb4 0x10009c294 0x10009ca84 0x1875f461c 0x1000e4754 0x1000e2acc 0x1875f461c 0x1 876b626c 0x1007b4df0 0x1007bf854 0x1007b8120 0x1007c175c 0x1007c2f18 0x1977252e4 0x197724fa8) libc++abi.dylib:以 NSException 类型的未捕获异常终止

非常感谢有关此事的任何帮助。

最佳答案

版本 0.23.1 适合您。 我在 RestKit github 页面上发布了问题并进行了临时修复。

https://github.com/RestKit/RestKit/issues/2155

在将 NSNull 转换为 String 的对象中,我做了类似的事情

public override func validateValue(ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKeyPath inKeyPath: String, error outError: NSErrorPointer) -> Bool {
    if let memory = ioValue.memory {
        if inKeyPath == "hint" && ioValue.memory is NSNull {
            ioValue.memory = nil
            return true
        }
    }
    return super.validateValue(ioValue, forKeyPath: inKeyPath, error: outError)
}

您还可以将 RKMappingOperationDataSource 更改为在请求时以委托(delegate) NO 形式返回

- (BOOL)mappingOperationShouldSetUnchangedValues:(RKMappingOperation *)mappingOperation;

顺便说一句。这个问题已经存在于堆栈上:RestKit JSON null value crash

关于ios - 如何在 Swift 上使用 RESTKIT 处理 JSON 的 Null 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28047237/

相关文章:

ios - 将我的应用程序转换为新的 Swift - 错误 "Extra argument in call"

php - 解析 JSON 数组并提取选择列表 ID 和值的值

javascript - 浏览器之间 JSON.stringify 结果的差异

json - 来自 TexturePacker 的 EaselJS Spritesheet

objective-c - RestKit 对象建模动态数据

restkit - 如何查看RestKit网络的通信(JSON字符串)?

objective-c - 在coredata和restkit中本地更新托管对象的属性

ios - Swift Tableview 搜索结果选择的单元格复选标记不持久

ios - 单元格按钮上的操作

ios - 关于 .h 和 .m 文件(如何管理)