2015-11-18 4 views
0

Используя Swift 2 и Xcode 7 в приложении IOS, я стараюсь избегать fatal error unexpectedly found nil while unwrapping an Optional value, применяя необязательную цепочку к NSObject FriendShip, но я не знаю, правильный путь.Swift: неожиданно найдено нуль при распаковке необязательного значения, NSObject

Класса ДРУЖБА показала ниже получает нулевую ценность в собственности друга, но компилятор дает мне fatal error unexpectedly found nil while unwrapping an Optional value:

class FriendShip: NSObject{ 

    var id: String? 
    var friend: User? 
    var date: NSDate? 

    init(dictionary: [String: AnyObject]){ 

    id  = dictionary["id"] as? String 
    friend = User(dictionary: (dictionary["friend"] as! [String: AnyObject])) 
    date  = dictionary["date"] as? NSDate 

    } 
} 

, но если установить свойство друга, чтобы по желанию, компилятор дает мне ошибку EXC_BAD_INSTRUCTION :

class FriendShip: NSObject{ 

    var id: String? 
    var friend: User? 
    var date: NSDate? 

    init(dictionary: [String: AnyObject]){ 

    id  = dictionary["id"] as? String 
    friend = User(dictionary: (dictionary["friend"] as? [String: AnyObject])!) 
    date  = dictionary["date"] as? NSDate 

    } 
} 

Как я могу его решить?

+3

на великое дело о стрижа. Где ошибка? Это восклицательный знак. –

ответ

1

Вы все еще разворачивая опциональный здесь:

friend = User(dictionary: (dictionary["friend"] as? [String: AnyObject])!) 

А именно:

(dictionary["friend"] as? [String: AnyObject])! 

Это должно быть вместо того, чтобы что-то вроде:

if let friendDictionary = dictionary["friend"] as? [String: AnyObject] { 
    friend = User(dictionary:friendDictionary) 
} 
Смежные вопросы

 Смежные вопросы