首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问快速字典中的快速数组

访问快速字典中的快速数组
EN

Stack Overflow用户
提问于 2014-07-07 23:29:48
回答 3查看 1.5K关注 0票数 0

我有一个函数,它需要一个字典,我需要解析里面的信息。

我可以从字典中获得一个NSArray,但难道我不能访问本地的快速数组吗?

代码语言:javascript
复制
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

        ...
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-07 23:32:14

Array是结构,它不是对象,所以不能从AnyObject转换它

另一方面,NSArray是类,所以可以从AnyObject转换它。

票数 0
EN

Stack Overflow用户

发布于 2014-07-07 23:31:50

本机Swift数组被实现为一个结构,所以它不是AnyObject。如果您的字典包含<String, Any>,那么它应该可以工作,因为数组确实符合任何。

票数 1
EN

Stack Overflow用户

发布于 2015-07-31 23:52:13

您可以将数组包装在类中,这将解决您的问题。

代码语言:javascript
复制
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)
...

还可以在包装类中实现数组方法,并将它们转发给数组。

代码语言:javascript
复制
class WrappedArray<T> {
    var array = Array<T>()

    func append(_ newElement:T) {
        self.array.append(newObject)
    }
}

然后,您可以像使用常规数组一样使用它。

dict[0].append(0)

而不是

dict[0].array.append(0)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24621521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档