Подтвердить что ты не робот

Как преобразовать NSNull в nil в Swift?

Я хочу получить данные 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 object .age установлено на nil.

Я использую Xcode 6 Beta 6.

4b9b3361

Ответ 1

Это может быть то, что вы ищете:

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

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

Ответ 2

Я бы рекомендовал вместо использования пользовательской функции преобразования просто указать значение с помощью as?:

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

Если значение NSNull, приведение as? завершится с ошибкой и вернет nil.