2016-03-28 4 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. 
    } 
} 

Я хочу инициализировать пользователя, передав JSON его конструктору. Однако иногда JSON не соответствует. В этом случае я хочу, чтобы инициализация была отменена, а User - ноль.Как отменить инициализацию объекта во время init()?

+0

Я рекомендовал бы сильно против этого типа '' Int там!. Это путь к проблемам. – nhgrif

+0

'var user = Пользователь (данные: someValidData); user.id = nil; ' – nhgrif

ответ

2

что-то вроде этого:

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

     self.id = id 
    } 
} 
1

Создайте «Неудачный инициализатор» - это один или будет возвращен self или nil.

class User { 
    var id: Int! 

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

    id = data["id"].int 
    } 
} 
Смежные вопросы