【问题标题】:Swift: unexpectedly found nil while unwrapping an Optional value, NSObjectSwift:在展开可选值 NSObject 时意外发现 nil
【发布时间】:2015-11-19 07:16:54
【问题描述】:

在 IOS 应用程序中使用 Swift 2 和 Xcode 7,我试图避免 fatal error unexpectedly found nil while unwrapping an Optional value 将可选链接应用到 FriendShip NSObject 但我不知道哪种方法是正确的。

下面显示的 FriendShip 类在朋友属性中接收 nil 值,但编译器给了我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

  }
}  

我该如何解决?

【问题讨论】:

  • 关于 swift 的优点。错误在哪里?这是感叹号所在的地方。

标签: ios swift


【解决方案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)
}

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多