如何在Swift中将NSNull转换为nil?

时间:2014-08-29 19:32:24

标签: swift xcode6

我想从我的服务器获取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' s):

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

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

我使用的是Xcode 6 Beta 6。

2 个答案:

答案 0 :(得分:36)

这可能就是你要找的东西:

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

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

答案 1 :(得分:10)

我建议,不要使用自定义转换功能,只需使用as?转换值:

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

如果值为NSNull,则as?广告系列将失败并返回nil