【问题标题】:How to convert NSNull to nil in Swift?如何在 Swift 中将 NSNull 转换为 nil?
【发布时间】:2014-10-23 20:44:21
【问题描述】:

我想从我的服务器获取 JSON 数据并在启动时对其进行操作。在 Objective-C 中,我使用此 #define 代码将 NSNull 转换为 nil,因为获取的数据有时可能包含 null。

#define NULL_TO_NIL(obj) ({ __typeof__ (obj) __obj = (obj); __obj == [NSNull null] ? nil : obj; })

但是,在 Swift 中,是否可以将 NSNull 转换为 nil?我想使用以下操作(代码是Objective-C的):

people.age = NULL_TO_NIL(peopleDict["age"]);

在上述代码中,当获取到的数据的age键为NULL时,则people对象的.age属性设置为nil

我使用 Xcode 6 Beta 6。

【问题讨论】:

标签: swift xcode6


【解决方案1】:

这可能是您正在寻找的:

func nullToNil(value : Any?) -> Any? {
    if value is NSNull {
        return nil
    } else {
        return value
    }
}

people.age = nullToNil(peopleDict["age"])

【讨论】:

  • 假设这是字符串文字的好方法。我也更新了零引用的代码
【解决方案2】:

我建议不要使用自定义转换函数,而是使用 as? 转换值:

people.age = peopleDict["age"] as? Int

如果值为NSNullas? 转换将失败并返回nil

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多