我正在将我的项目从Swift 2
转换为Swift 3
,我遇到了一个奇怪的错误:
无法下标类型'inout [[String:AnyObject]]'的值(又名 'inout Array>')
“inout”在这个错误中甚至意味着什么?
这是代码部分:
var productsValue = [[String:AnyObject]]()
cell.snusProductImageView.kf.setImage(with: NSURL(string: productsValue[indexPath.row]["productUrl"] as! String)!)
造成这种情况的原因是什么?我完全不理解错误,因为它是如此的董事会。你能帮助我吗?
我尝试使用guard
和let
,但由于某种原因无效。
我了解productsValue是[String:AnyObject]
。这意味着["productUrl"]
是AnyObject
,我无法指定AnyObject
,预计会有[String:AnyObject]
。但为什么它在Swift 2
中起作用?
答案 0 :(得分:0)
我解决了这样的错误:
var productsValue = [[String:AnyObject]]()
if productsValue[indexPath.row]["productUrl"] != nil {
var productValue = self.productsValue[indexPath.row]["productUrl"] as! String
cell.snusProductImageView.kf.setImage(with: NSURL(string: productValue) as! Resource?)
}
我不知道这是否解决了这个问题,为什么它会使错误无声,但是是的。