我有类滑块。哪个幻灯片广告[广告]。现在我创建了sliderForFood,它必须滑动食物阵列[食物]。如何覆盖我的广告[广告] var with foods [FOOD] var。
class SliderADV {
var arrayAdvertisements: [Advertisement] = [Advertisement]()
}
class SliderForFood: SliderADV {
var arrayFood:[Food] = [Food]()
override var arrayAdvertisements: [Advertisement]{
get {
return arrayFood
}
set{
if newValue is [ArrayFood]{
self.arrayAdvertisement = newValue
}
}
}
}
答案 0 :(得分:1)
您最好按照以下方式进行操作 - 创建一个Item协议并创建两个实现,即广告和食物(将来可能还需要更多)。您的滑块功能可以根据项目对象的实现进行更改,您可以通过在协议中添加方法和属性来实现。
protocol Item {
var name : String {get set}
func showDetail()
}
class Advertisement : Item {
var name : String!
init(with name: String) {
self.name = name
}
func showDetail() {
}
}
class Food : Item {
var name : String!
init(with name: String) {
self.name = name
}
func showDetail() {
}
}
class Slider {
var items: [Item]! // any object which implements Item protocol
}
如果这不能解决您的问题,请告诉我。
答案 1 :(得分:1)
继承基本上意味着“是一种”。你说的是“Slider for food 是一种广告的滑块”,这对我来说没有意义。
IMO,您应该创建一个这样的协议:
protocol Slider {
associatedtype ThingToSlide
var things: [ThingToSlide] { get set }
}
然后你有两个滑块类符合它:
class SliderForAds : Slider {
typealias ThingToSlide = Advertisment
var things: [Advertisment] = [Advertisment]()
}
class SliderForFood : Slider {
typealias ThingToSlide = Food
var things: [Food] = [Food]()
}