在方便初始化中创建数组

时间:2019-02-25 22:27:33

标签: arrays swift initializer

我现在正在从iOS编程Big Nerd Ranch一书中学习S.O.L.I.D。我想通过方便初始化创建一个数组,但是我遇到了一个问题,我想像显示数组的确切顺序一样显示文本和图像,但是我不知道怎么做。在这里,我向您展示我的代码

这是我的物品类别

class Item: NSObject {
var imageName: String
var label: String

init(imageName: String, label: String) {
    self.imageName = imageName
    self.label = label

    super.init()
}

convenience init(list: Bool = false) {
    if list {
        let imageList = ["milada-vigerova", "david-rodrigo", "quran"]
        let labelList = ["Fiqih", "Hadist", "Tafsir"]

        let sortImageName = imageList[imageList.count - 1]
        let sortLabel = labelList[labelList.count - 1]

        self.init(imageName: sortImageName, label: sortLabel)
    } else {
        self.init(imageName: "", label: "")
    }
  }
}

这是我的ItemStore类,它从Item类创建一个数组

class ItemStore {
var allItems = [Item]()

@discardableResult func createItem() -> Item {
    let newItem = Item(list: true)
    allItems.append(newItem)

    return newItem
}

// I make this for in loop to make the table view numberOfSection will return 3 of an allItems
init() {
    for _ in 0..<3 {
        createItem()
    }
  }
}

请帮助我

1 个答案:

答案 0 :(得分:2)

好主啊,这是书呆子,代码繁琐。

首先一个结构就足够了,您可以免费获得初始化器

struct Item {
    let imageName: String
    let label: String
}

ItemStore中立即创建数组

class ItemStore {
    var allItems = [Item]()

    func createArray() {
        allItems = [Item(name: "Fiqih", image: "milada-vigerova"),
                    Item(name: "Hadist", image: "david-rodrigo"),
                    Item(name: "Tafsir", image: "quran")]
    }
}

在表格视图中,在allItems.count中返回numberOfRows(不是numbersOfSection