缺少在元组中调用参数的参数

时间:2015-08-26 00:30:33

标签: swift tuples

所以我正在开发一个菜单类型的类,由于某些原因我得到了错误:"缺少参数'菜肴的参数。在电话"

以下是代码:

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....))

我检查了menuloadedDishes的类型,我已将menu.append中的参数分开,并检查了它的类型,并且它们全部都是他们应该出现。没有选项。我已从元组中删除了sectionNamedishes标签,但错误仍然神秘地出现。

任何人都可以帮我找出原因吗?

谢谢!

1 个答案:

答案 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初始化)。