gpt4 book ai didi

ios - Swift:在解包可选值 NSObject 时意外发现 nil

转载 作者:行者123 更新时间:2023-11-29 01:27:59 24 4
gpt4 key购买 nike

在 IOS 应用程序中使用 Swift 2 和 Xcode 7,我试图避免 在展开可选值时意外发现 nil 的 fatal error 将可选链接应用于 FriendShip NSObject 但我没有不知道哪个是正确的方法。

下面显示的 FriendShip 类在 friend 属性中接收到 nil 值,但编译器给我在解包 Optional 值时意外发现 nil 的 fatal error :

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

}
}

但是如果我将 friend 属性设置为可选,编译器会给我一个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

}
}

我该如何解决?

最佳答案

您仍在此处打开可选内容:

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)
}

关于ios - Swift:在解包可选值 NSObject 时意外发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com