【问题标题】:Create array in convenience init在便利初始化中创建数组
【发布时间】:2019-07-19 09:58:19
【问题描述】:

我现在正在从 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()
    }
  }
}

请帮帮我

【问题讨论】:

    标签: arrays swift initializer


    【解决方案1】:

    上帝啊,这是相当书呆子和繁琐的代码。

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

    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 in numberOfRows(不是numbersOfSection

    【讨论】:

    • 哈哈我的书呆子只是因为我遵循那本书,我明白只要像上面那样应用 S.O.L.I.D 原则的代码并不重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多