use*_*014 6 arrays dictionary casting swift
我一直在玩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
Run Code Online (Sandbox Code Playgroud)
这将返回Swift中的Dictionaries(NSDictionaries).但最后一行引发了一个错误:
字典'与'AnyObject'不同
我试过用了 as! [AnyObject]
但是这引发了另一个错误:
'AnyObject'不是'Dictionary'的子类型
我没有得到第二个错误,因为这不一定是一个子类型,反之亦然.关于如何解决这个问题的任何想法?我没有找到几个小时的谷歌和研究的答案.
Dictionary是在夫特一个结构,而AnyObject是
///所有类隐式符合的协议.
根据您要执行的操作,您可能希望Any在代码中使用,或者使用字典将字典转换为NSDictionary as NSDictionary.
澄清后编辑:
如果append从字典本身拆分调用,则会看到更好的错误消息:

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