В следующем коде я пытаюсь определить простой класс модели, и это неудачный инициализатор, который принимает (json-) словарь в качестве параметра. Инициализатор должен возвращать nil
, если имя пользователя не определено в исходном json.
1. Почему код не компилируется? В сообщении об ошибке говорится:
Все сохраненные свойства экземпляра класса должны быть инициализированы перед возвратом nil из инициализатора.
Это не имеет смысла. Почему я должен инициализировать эти свойства, когда планирую вернуть nil
?
2. Является ли мой подход правильным или будут ли другие идеи или общие шаблоны для достижения моей цели?
class User: NSObject {
let userName: String
let isSuperUser: Bool = false
let someDetails: [String]?
init?(dictionary: NSDictionary) {
if let value: String = dictionary["user_name"] as? String {
userName = value
}
else {
return nil
}
if let value: Bool = dictionary["super_user"] as? Bool {
isSuperUser = value
}
someDetails = dictionary["some_details"] as? Array
super.init()
}
}