如何访问类实例数组中的数组?

时间:2016-09-12 00:50:13

标签: ios arrays swift class tableview

我尝试通过创建表示每个列表项的类来练习使用模型制作列表应用。我有一个Category类,它包含三个属性 - 两个字符串和一个字符串数组。这是班级:

class Category {

var name: String
var emoji: String
var topics: [String]
   // (the getCategories method listed below goes here) //  

init(name: String, emoji: String, topics: [String]) {
   self.name = name
   self.emoji = emoji
   self.topics = topics 
}

在我的Category类中,我有一个方法可以为类别赋值,这样我就可以将它们保留在视图控制器之外。这种方法如下:

class func getCategories() -> [Category]
    {
        let categories = [Category(name:"cat", emoji:"", topics: ["paws","tails", "fur", "pussyfoot","purr", "kitten", "meow"])
    ]
     return categories
}

在我的一个tableview控制器文件中,我试图通过将其设置为getCategories方法中主题的主题计数来获取部分中的行数。我没做什么似乎工作,虽然我能够得到getCategories方法中的类别的计数...我似乎无法专门访问主题数组。

这是我为了获得类别而做的工作......

    var categories = Category.getCategories()
     .... 
            override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return categories.count
    }

我需要这样做,除了我需要获取我在getCategories方法中设置的主题的数量。

非常感谢! :)

2 个答案:

答案 0 :(得分:0)

由于categoriesCategory个对象的数组,因此您需要访问正确的索引,然后访问主题数组并获取计数:

categories[section].topics.count

答案 1 :(得分:0)

我认为你缺少的那篇文章是你需要知道你想从哪个部分获得主题数。这应该通过表视图数据源回调为您提供。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return categories[section].topics.count
}

此外,当您需要访问特定主题时,您将通过indexPath

func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let topic = categories[indexPath.section].topics[indexPath.row]
    let cell = …
    …
    return cell
}