How to convert NSNull to nil in Swift?

ⅰ亾dé卋堺 提交于 2019-12-29 06:41:09

问题


I want to fetch JSON data from my server and manipulate it upon launch. In Objective-C, I have used this #define code to convert NSNull to nil, since the fetched data might include null at times.

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

However, in Swift, is it possible to convert the NSNull to nil? I want to use the following operation (the code is Objective-C's):

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

In the above code, when the fetched data's age key is NULL, then the people object's .age property is set to nil.

I use Xcode 6 Beta 6.


回答1:


This could be what you are looking for:

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

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



回答2:


I would recommend, instead of using a custom conversion function, just to cast the value using as?:

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

If the value is NSNull, the as? cast will fail and return nil.



来源:https://stackoverflow.com/questions/25575030/how-to-convert-nsnull-to-nil-in-swift

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!