iOS - выбор модели класса - PullRequest
1 голос
/ 05 марта 2020

Могу ли я использовать один и тот же класс модели для хранения данных массива из нескольких типов словаря с одинаковыми ключами?

Скажем, например, у меня есть класс модели с именем ProductDetail , используемый для хранения сведений о продукте с идентификатором ключа, именем и изображением и их отображения в UITableViewController.

Теперь у меня есть другой класс, названный категориями с такими же вышеупомянутыми ключами.

Вот мой класс модели:

class TrendingProductsData: NSObject {

    var id : Int! = 0
    var name : String! = ""
    var image : String! = ""

}

Мой вопрос: можно ли использовать модель ProductDetail для хранения данных категорий?

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Если вы хотите более сложную структуру, такую ​​как subCategory et c. это может быть лучше. Но я думаю, что в основном эти занятия - то, что вы хотите.

Товар может иметь подробности, только если isCategory имеет значение false.

class Product {

    var id : Int = 0
    var name : String = ""
    var image : String = ""
    var isCategory: Bool = false

    var productDetail: ProductDetail? = nil

}

class ProductDetail {
    var description : String = ""
    var price : Decimal?
}
1 голос
/ 05 марта 2020

Как насчет использования супер модели для общих свойств и расширения тех, которые у вас есть. Вот что я имею в виду:


class BaseModel: NSObject {

    var id : Int = 0
    var name : String = ""
    var image : String = ""

    func setData(data: Any) {
        // Parse id, name and image from data
    }
}

class ProductDetail: BaseModel {
    // Add your other properties and/or functions
    var productProvider: String = "" // I added this to be an example

    override func setData(data: Any) {
        super.setData(data: data) // Since the key-value pairs are the same id, name and image will be parsed at BaseModel

        // Parse extra values such as  productProvider
    }
}

class Categories: BaseModel {
    // Add your other properties and/or functions
    var categorySubtitle: String = "" // I added this to be an example

    override func setData(data: Any) {
        super.setData(data: data) // Since the key-value pairs are the same id, name and image will be parsed at BaseModel

        // Parse extra values such as categorySubtitle
    }
}

Таким образом, вы можете создавать как ProductDetail, так и Categories модели с общими свойствами, и при необходимости вы можете добавлять отдельные свойства и функции.

...