2014-08-29 20 views
14

Voglio recuperare i dati JSON dal mio server e manipolarli al momento del lancio. In Objective-C, ho utilizzato questo codice #define per convertire NSNull in nil, poiché i dati recuperati potrebbero includere null a volte.Come convertire NSNull in nil in Swift?

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

Tuttavia, in Swift, è possibile convertire il NSNull-nil? Voglio usare la seguente operazione (il codice è di Objective-C):

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

Nel codice precedente, quando la chiave del dati recuperati age è NULL, allora proprietà dell'oggetto people.age è impostato su nil.

Io uso Xcode 6 Beta 6.

+0

possibile duplicato di [Utilizzare nil anziché Opzionale () per il valore null in JSON] (http://stackoverflow.com/questions/25321261/use-nil-instead-of-optionalnull-for-null-value- in-json) – jtbandes

risposta

35

questo potrebbe essere quello che stai cercando:

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

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

supponiamo che questo sia un buon metodo per la stringa letterale. Ho aggiornato il codice per zero riferimenti pure –

8

lo consiglio, invece di utilizzare una funzione di conversione personalizzato, solo per il cast del valore utilizzando as? :

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

Se il valore è NSNull, il cast as? fallirà e tornare nil.

Problemi correlati