在Swift中创建一个包含多个数组的数组

时间:2015-04-28 17:48:29

标签: swift swift-array

我有一个具有某些属性的对象,类或结构的数组

我想将这些礼节放在一个数组中,以便我可以轻松访问它们  在TableDataSource中(因为section,indexpath等..)

我试过写这个初始化

ListField

然后检索它

var dataStructure = Array<Any>()

    var tweet : Tweet?{
        didSet{
            dataStructure.removeAll()
            dataStructure.append(tweet?.media)
            dataStructure.append(tweet?.urls )
            dataStructure.append(tweet?.hashtags)
            dataStructure.append(tweet?.userMentions)


        }
    }

但是arr总是为零

也许是因为我正在向NSArray施展?但是我无法投射到#34; Array&#34;

媒体,网址,hastags和userMentions初始化在&#34; Tweet&#34;类

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete method implementation.
    // Return the number of rows in the section.
    let arr = dataStructure[section] as? NSArray

    if arr != nil{
        println(arr!)
        return arr!.count
    }else{
        return 0
    }
}

所以它们是非常正常的数组

1 个答案:

答案 0 :(得分:1)

您的代码基本上存在一些问题:

1)didSet在init期间没有调用。这会导致dataStructure数组为空;

2)你确定需要演员NSArray吗?没有它你就可以得到数。

3)使用Tweet类中的计算属性来接收所需数据会好得多。

public class Tweet {
    public var media = [MediaItem]()
    public var hashtags = [IndexedKeyword]()
    public var urls = [IndexedKeyword]()
    public var userMentions = [IndexedKeyword]()

    public var dataStructure:[Any] {
        return [media, hashtags, urls, userMentions]
    }
}