Blaszard
Blaszard

Reputation: 31953

How to convert NSNull to nil in Swift?

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.

Upvotes: 17

Views: 23332

Answers (2)

Sulthan
Sulthan

Reputation: 130092

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.

Upvotes: 14

Martin R
Martin R

Reputation: 539685

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"])

Upvotes: 39

Related Questions