2014-08-29 12 views
14

Chcę pobrać dane JSON z mojego serwera i manipulować nim po uruchomieniu. W Objective-C użyłem tego kodu #define do konwersji NSNull na nil, ponieważ pobrane dane mogą czasem zawierać wartość null.Jak przekonwertować NSNull na zero w Swift?

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

Jednak w Swift, jest to możliwe do konwersji NSNull do nil? Chcę użyć następującą operację (kod jest Objective-C'S):

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

W powyższym kodzie, gdy age klucz pobranego Danych jest NULL, wówczas people obiektu .age właściwość jest ustawiona na nil.

Używam Xcode 6 Beta 6.

+0

możliwy duplikat [Użyj zero zamiast Opcjonalnie () dla wartości pustej w JSON] (http://stackoverflow.com/questions/25321261/use-nil-instead-of-optionalnull- for-null-value- in-json) – jtbandes

Odpowiedz

35

To może być to, czego szukasz:

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

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

załóżmy, że jest to dobry sposób na literał łańcuchowy. zaktualizowałem również kod dla zerowych odniesień –

8

polecam, zamiast przy użyciu niestandardowych funkcji konwersji, wystarczy rzucić wartość używając as? :

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

Jeśli wartość jest NSNull The as? obsada zawiedzie i powrócić nil.

Powiązane problemy