• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 13:47:45 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

当从我的服务器接收到包含空值的答案(在 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 长度]:无法识别的选择器发送到实例 0x197b86ba0” * 首先抛出调用栈: (0x1867fa59c 0x196f040e4 0x186801664 0x1867fe418 0x186702b6c 0x100707964 0x100023dc8 0x187605b10 0x1000a34a0 0x1000a4078 0x1000a99d4 0x1000a8dfc 0x10009a8f4 0x1000995a8 0x10009bbb4 0x10009c294 0x10009ca84 0x1875f461c 0x1000e4754 0x1000e2acc 0x1875f461c 0x1876b626c 0x1007b4df0 0x1007bf854 0x1007b8120 0x1007c175c 0x1007c2f18 0x1977252e4 0x197724fa8) libc++abi.dylib:以 NSException 类型的未捕获异常终止

非常感谢您就此事提供任何帮助。



Best Answer-推荐答案


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)mappingOperationShouldSetUnchangedValuesRKMappingOperation *)mappingOperation;

顺便说一句。 Stack 上已存在此问题:RestKit JSON null value crash

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap