这将是我在StackOverflow上的第一个问题,也是我在Swift 3上提出的第一个问题;我是一个初学者,也许咬比我可以咀嚼,但是...如何将未知的结构传递给函数 - swift 3,IOS10
我想创建一个类,这将有助于创建菜单项(类称为'MenuItems')填充到一个我的IOS应用程序中的动态表。我已经创建了这个类的大部分,它根据传递给它的数据来标识头是什么以及每种类型的多少将在表中分成几个部分。我现在正在试图让这个类变得更通用,所以它可以用于不同的数据结构,我可能会在将来将它们填充到类似的表中。
我希望表中的数据来自于它自己的swift文件中的结构。它看起来像这样:
struct EquipmentStruct {
var name : String!
var serialNumber : String?
var alias : String?
var image : UIImage?
}
我有,在短期内,在我tableViewController文件(它不会呆在这里将来)初始化类型EquipmentStruct的数组,我希望创造一个公共职能在我的MenuItems类,这将让我的项目添加到必要
func addItem(item, dataType) // types for item and dataType are part of my question
在设计这个功能的表我发现我的问题:
我如何通过一个将类型为EquipmentStruct的变量复制到我的MenuItems类的一个实例中,以便我可以将它添加到我的表中 - 请注意,我所要求的仅仅是指导如何完成addItem方法,而不是其他类。在我心目中,我想要做的事,如:
var dataArray : [EquipmentStruct] = [EquipmentStruct(name: "SA80", serialNumber:"-56-789", alias: "29", image: #imageLiteral(resourceName: "SA80")), EquipmentStruct(name: "LSW", serialNumber:"11111-22-333-4444", alias: "98", image: #imageLiteral(resourceName: "LSW"))] var tableMenuItems = MenuItems() // create instance of class MenuItems override func viewDidLoad() { super.viewDidLoad() for var itemNumber in 0..<dataArray.count{ tableMenuItems.addItem(item: generalHoldingsDataArray[itemNumber], dataType: EquipmentStruct) }
的为addItems方法原型将因此会是这样的:
// Add new item of type 'dataType' to MenuItems.tableDataArray
// Store tableDataArrayType for use throughout the class
//
func addItem(item: [Something], dataType: SomeVariableType){
if let newItem = item as! dataType{ // cast the variable received to its type
tableDataArrayType = dataType
tableDataArray.append(newItem)
}
}
这是做事的好方法吗?
有没有更简单的方法来做我想做的事情?
如果我继续沿着这条道路走下去,可能会遇到什么问题?
您的帮助将不胜感激。
亲切的问候
表格视图应该只包含一种类型的东西。你是否试图创建一个表格视图来保存许多不同类型的对象作为模型?或者你是否试图创建多个表视图,每个表视图都将一种类型的对象保存为模型,但具有相同的'MenuItems'类? – Sweeper