我有一个函数,它需要一个字典,我需要解析里面的信息。
我可以从字典中获得一个NSArray,但难道我不能访问本地的快速数组吗?
class func parseResults(resultsDict:Dictionary<String, AnyObject>) -> Array<Track>? {
var results : NSArray = resultsDict["results"] as NSArray // This works
//var results : Array = resultsDict["results"] as Array<AnyObject> // This doesnt work
...
}发布于 2014-07-07 23:32:14
Array是结构,它不是对象,所以不能从AnyObject转换它
另一方面,NSArray是类,所以可以从AnyObject转换它。
发布于 2014-07-07 23:31:50
本机Swift数组被实现为一个结构,所以它不是AnyObject。如果您的字典包含<String, Any>,那么它应该可以工作,因为数组确实符合任何。
发布于 2015-07-31 23:52:13
您可以将数组包装在类中,这将解决您的问题。
class WrappedArray<T> {
var array = Array<T>()
}
var dict = Dictionary<Int, WrappedArray<Int>>()
dict[0] = WrappedArray<Int>()
dict[0].array.append(0)
dict[0].array.append(1)
...还可以在包装类中实现数组方法,并将它们转发给数组。
class WrappedArray<T> {
var array = Array<T>()
func append(_ newElement:T) {
self.array.append(newObject)
}
}然后,您可以像使用常规数组一样使用它。
dict[0].append(0)
而不是
dict[0].array.append(0)
https://stackoverflow.com/questions/24621521
复制相似问题