Создать массив в удобном init - PullRequest
0 голосов
/ 26 февраля 2019

Я изучал SOLID прямо сейчас из книги iOS-программирование Big Nerd Ranch.Я хочу сделать массив из удобства init, но у меня есть проблема, я хочу отображать текст и изображение, как точный порядок массива, но я не знаю, как.здесь я покажу вам мой код

Это мой класс предметов

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, который создает массив из класса предметов

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 голосов
/ 26 февраля 2019

Господи, это довольно всезнайка и громоздкий код.

Прежде всего достаточно структуры, вы получаете инициализатор бесплатно

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...