在 Swift 中创建多个数组的数组

Create an Array of multiple Arrays in Swift

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

我想把这些属性放在一个数组中,这样我就可以很容易地访问它们 在 TableDataSource 中(因为部分、索引路径等。)

我试过写这个初始化

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)


        }
    }

然后检索它

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
    }
}

但是 arr 总是 nil

可能是因为我正在投射到 NSArray?但我无法转换为 "Array"

media 、 urls 、 hastags 和 userMentions 在 "Tweet" class

中初始化
public var media = [MediaItem]()
public var hashtags = [IndexedKeyword]()
public var urls = [IndexedKeyword]()
public var userMentions = [IndexedKeyword]()

所以它们是非常普通的数组

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

1) didSet 未在初始化期间调用。这导致 dataStructure 数组为空;

2) 您确定需要转换为 NSArray 吗?没有它你也可以计数。

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

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]
    }
}