在我的UITableView中,我传递了一个数据数组,每个数据都有一个唯一的ID。我想通过唯一的ID初始化该类,从而在该类中调用某个函数
我可以在单元格中执行该语句,但是稍后使它成为可重用的函数(我打算)是很有用的
class GetFoodModel {
var modelArr : NSMutableArray = []
func modelByKey(key : String) -> Any {
switch key {
case "breakfast":
return BreakfastData() as BreakfastData
case "lunch":
return LunchData() as LunchData
default:
return false
}
}
}
基本上,这是我的称呼方式:
(不完全是我的代码,只是我想要的一个示例)
let FoodClass = GetFoodClass()
let TheClass = FoodClass.modelByKey(key: uniqueID)
let totalFoods = TheClass.totalFood()
尽管这些类的属性没有显示,但我已经厌倦了使用AnyClass
。
对于每个这些类,函数名称都是通用的。初始化类时,将填充其中的数组。然后,我调用此函数以返回计数。
class BreakfastData {
myArr : NSArray = []
init() {
myArr.append('Eggs')
myArr.append('Ham')
}
func totalFood() -> Int {
return myArr.count
}
}
答案 0 :(得分:1)
似乎您只需要一个协议,表示符合该协议的类具有方法totalFood()
。
protocol FoodDataType {
func totalFood() -> Int
}
class BreakfastData: FoodDataType {
var myArr: [String] = []
init() {
myArr.append("Eggs")
myArr.append("Ham")
}
func totalFood() -> Int {
return myArr.count
}
}
class LunchData: FoodDataType {
var myArr: [String] = []
init() {
//populate myArr
//...
}
func totalFood() -> Int {
return myArr.count
}
}
class GetFoodModel {
func modelByKey(key : String) -> FoodDataType? {
switch key {
case "breakfast":
return BreakfastData()
case "lunch":
return LunchData()
default:
return nil
}
}
}
let uniqueID = "breakfast"
let foodModel = GetFoodModel()
if let theFoodData = foodModel.modelByKey(key: uniqueID) {
let totalFoods = theFoodData.totalFood()
print(totalFoods)
}