Ios 返回类实例的Switch语句
在我的UITableView中,我正在传递一个数据数组,每个数据都有一个唯一的ID。我想通过唯一ID初始化类来调用该类中的某个函数 我可以在单元格中执行该语句,但以后将其作为一个可重用函数(我计划这样做)会很有用 基本上我想这样称呼它: (不完全是我的代码,只是我喜欢的示例) 我已经厌倦了使用Ios 返回类实例的Switch语句,ios,swift,xcode,swift4,Ios,Swift,Xcode,Swift4,在我的UITableView中,我正在传递一个数据数组,每个数据都有一个唯一的ID。我想通过唯一ID初始化类来调用该类中的某个函数 我可以在单元格中执行该语句,但以后将其作为一个可重用函数(我计划这样做)会很有用 基本上我想这样称呼它: (不完全是我的代码,只是我喜欢的示例) 我已经厌倦了使用AnyClass,尽管该类没有显示属性 函数名对于这些类中的每一个都是通用的。初始化类时,将填充其中的数组。然后我调用这个函数来返回计数 class BreakfastData { myArr :
AnyClass
,尽管该类没有显示属性
函数名对于这些类中的每一个都是通用的。初始化类时,将填充其中的数组。然后我调用这个函数来返回计数
class BreakfastData {
myArr : NSArray = []
init() {
myArr.append('Eggs')
myArr.append('Ham')
}
func totalFood() -> Int {
return myArr.count
}
}
似乎您只需要一个协议来表示符合该协议的类具有方法
totalFood()
您的
totalFood()
方法是如何定义的?它是早餐数据
和午餐数据
所共有的一种类方法吗?还是其他什么?@OOPer是的,这是这些类将具有的通用函数名。我只是让它在类中进行数组计数,如果totalFood()
是类方法或实例方法,则返回一个IntIt非常重要。请举例说明。不要在modelBykey中键入cast尝试在这里键入case FoodClass.modelBykey(key:uniqueID),然后查看您的class@OOPer更新,这将是一个类方法是正确的方式。我还键入了答案:D@ShauketSheikh,事实上,我已经准备了两个版本的代码,一个是实例方法版本,另一个是静态方法版本。。。这是一个适应最新更新的。。。这是一项很好的工作……我强烈建议不要初始化为空数组,只在init()
中追加多个项。只需将其直接初始化为literalvar myArr=[“ham”,“eggs”]
。另外,请注意,请使用您对问题域的了解,想出一个更好的名称来替换myArr
let FoodClass = GetFoodClass()
let TheClass = FoodClass.modelByKey(key: uniqueID)
let totalFoods = TheClass.totalFood()
class BreakfastData {
myArr : NSArray = []
init() {
myArr.append('Eggs')
myArr.append('Ham')
}
func totalFood() -> Int {
return myArr.count
}
}
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)
}