2016-03-28 9 views
0
class User { 
    var id: Int! 
    init(data: JSON){ 
     id = data["id"].int 
     //if id doesn't exist, then cancel the init and return nil. 
    } 
} 

Ich möchte einen Benutzer initialisieren, indem Sie einen JSON an seinen Konstruktor übergeben. Manchmal stimmt der JSON jedoch nicht überein. In diesem Fall möchte ich, dass die Initialisierung abgebrochen wird und der Benutzer auf Null gesetzt wird.Wie kann ich die Initialisierung eines Objekts während init() abbrechen?

+0

würde ich empfehlen, stark gegen diese '' Int Typ da!. Es ist der Weg zu Problemen. – nhgrif

+0

'var user = Benutzer (Daten: someValidData); user.id = nil; ' – nhgrif

Antwort

2

etwas wie folgt aus:

class User { 
    var id: Int! 
    init?(data: JSON) { 
     guard let id = Int(data["id"]) else { 
      return nil 
     } 

     self.id = id 
    } 
} 
1

Erstellen Sie einen "Failable Initialiser" - das ist entweder self oder nil.

class User { 
    var id: Int! 

    init?(data: JSON){ 
    if <id doesn't exist> { 
     return nil 
    } 

    id = data["id"].int 
    } 
}