问题
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