当从字典中访问时,无法将类型为Any的对象向下转换为Int
我有一个Gfycat结构体,它表示在对Gfycat API进行网络调用后要存储的数据。当从字典中访问时,无法将类型为Any的对象向下转换为Int
typealias JSONDictionary = [String: Any] struct Gfycat {
let id: String
let number: Int
}
在一个扩展Gfycat结构,我写了failable初始化该采用类型的字典[字符串:任何]作为其参数。这个字典然后被用来为结构的属性赋值。这是原来的init方法我说:
extension Gfycat { init?(dictionary: JSONDictionary) {
guard let id = dictionary["gfyId"] as? String,
let number = dictionary["gfyNumber"] as? Int { return nil }
self.id = id
self.number = number
}
}
的问题是,从字典访问值的时候,我不能垂头丧气从任何为int值。我必须先将Any转换为String,然后将该字符串转换为Int。这是一个错误,或者是Swift的一个特性,我不明白?
这是我的解决方案:
extension Gfycat { init?(dictionary: JSONDictionary) {
guard let id = dictionary["gfyId"] as? String,
let uncastedNumber = dictionary["gfyNumber"] as? String,
let number = Int(uncastedNumber) else { return nil }
self.id = id
self.number = number
}
}
回答:
我必须先垂头丧气任何为字符串,然后再转换字符串INT。这是一个错误,或者是Swift的一个特性,我不明白?
这既不是Swift的bug也不是功能。这是你正在使用的字典的事实。这东西是一个String,不是一个Int。所以你不能将它转换为Int。
以上是 当从字典中访问时,无法将类型为Any的对象向下转换为Int 的全部内容, 来源链接: utcz.com/qa/266097.html