所以我正在开发一个菜单类型的类,由于某些原因我得到了错误:"缺少参数'菜肴的参数。在电话"
以下是代码:
class Meal {
var nameOfMeal: String
var menu : [(sectionName: String, dishes: [Dish])]
var hours: String
init(nameOfMeal: String, menuIDs: [(sectionName: String, dishIDs: [String])], hours: String) {
self.nameOfMeal = nameOfMeal
setMenuFromIDs(menuIDs)
self.hours = hours
}
func setMenuFromIDs(menuIDs: [(sectionName: String, dishIDs: [String])]){
menu = []
for menuSection in menuIDs {
var loadedDishes = CoreDataUtility.loadArrayOfDishesFromIDs(menuSection.dishIDs)
menu.append((sectionName: menuSection.sectionName, dishes: loadedDishes))
}
}
}
错误发生在menu.append((sectionName: menuSection.sectionName....))
我检查了menu
,loadedDishes
的类型,我已将menu.append
中的参数分开,并检查了它的类型,并且它们全部都是他们应该出现。没有选项。我已从元组中删除了sectionName
和dishes
标签,但错误仍然神秘地出现。
任何人都可以帮我找出原因吗?
谢谢!
答案 0 :(得分:1)
作为Nate Cook said here:
......不要这样做。元组是为临时使用而设计的,并且会错过很多Swift的优势(编译器优化等)......
根据该答案,我将您的代码重写为:
SystemWebViewEngine
......它现在编译了!
请注意,我还将行Cordova 5.2.0
移到typealias MyTuple = (sectionName: String, dishes:[Dish])
class Meal {
var nameOfMeal: String
var menu : [MyTuple]
var hours: String
init(nameOfMeal: String, menuIDs: [(sectionName: String, dishIDs: [String])], hours: String) {
self.nameOfMeal = nameOfMeal
self.hours = hours
self.menu = [("", [Dish]())]
setMenuFromIDs(menuIDs)
}
func setMenuFromIDs(menuIDs: [(sectionName: String, dishIDs: [String])]){
menu = []
for menuSection in menuIDs {
var loadedDishes = CoreDataUtility.loadArrayOfDishesFromIDs(menuSection.dishIDs)
menu.append((menuSection.sectionName, loadedDishes))
}
}
}
函数的底部并初始化了您的setMenuFromIDs(menuIDs)
属性(以避免其他编译器警告,在其之前使用self初始化)。