数组 – 如何在swift中将Dictionary分配给AnyObject

前端之家收集整理的这篇文章主要介绍了数组 – 如何在swift中将Dictionary分配给AnyObject前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在玩 Swift.我有类型的多个错误,特别是使用Swift和我的旧Objective-C类.这个方法的问题是:我期待在Objective-C中由NSDictionarys组成的数组.
var curArr:[Dictionary<String,AnyObject>] = self.getItemsForCurrentStack()
var arrToReturn:[(Dictionary<String,AnyObject?>)] = []
for obj in curArr{
    arrToReturn.append(["image": UIImage(named: obj["imageName"] as! String),"color": UIColor(red:obj["colorDic"]!["red"] as! CGFloat,green:obj["colorDic"]!["green"] as! CGFloat,blue:obj["colorDic"]!["blue"] as! CGFloat,alpha:1.0),"percentage": obj["percantage"]])
}
return arrToReturn

这将返回Swift中的Dictionaries(NSDictionaries).但最后一行引发了一个错误

Dictionary’ is not identical to ‘AnyObject’

我试过用过! [AnyObject]

但是这引发了另一个错误

‘AnyObject’ is not a subtype of ‘Dictionary’

我没有得到第二个错误,因为这不一定是一个子类型,反之亦然.关于如何解决这个问题的任何想法?我没有找到几个小时的谷歌和研究的答案.

Dictionary是Swift中的结构,而AnyObject是

/// The protocol to which all classes implicitly conform.

根据您的尝试,您可能希望在代码中使用Any,或者使用NSDictionary将字典转换为NSDictionary.

澄清后编辑:

如果从字典本身拆分追加调用,则会看到更好的错误消息:

因此,问题是您的字典包含一些可选值,但Optional是一个结构,不能转换为Obj-C.你可以通过施法来修复UIImage!和AnyObject! (ImplicitlyUnwrappedOptional),或使用as!.

猜你在找的Swift相关文章