Arrays apple swift-从变量引用数组

Arrays apple swift-从变量引用数组,arrays,swift,Arrays,Swift,新手到斯威夫特,一个做作的例子。 我有一个菜单类别数组,它们依次有菜单项 我想遍历类别,然后读取项目子数组的元素。不知道将元素引用为数组的语法 第10行第18列出错:类型“字符串”不符合协议“序列” 报价中的(项目){ var menuOffering = ["drinks" , "breakfastEntree"] var drinks: Set = ["water","milk","coffee","tea","diet coke"] var breakfastEntree: Set =

新手到斯威夫特,一个做作的例子。 我有一个菜单类别数组,它们依次有菜单项 我想遍历类别,然后读取项目子数组的元素。不知道将元素引用为数组的语法

第10行第18列出错:类型“字符串”不符合协议“序列” 报价中的(项目){

var menuOffering = ["drinks" , "breakfastEntree"]
var drinks: Set = ["water","milk","coffee","tea","diet coke"]
var breakfastEntree: Set  = ["eggs", "bacon", "sausage","pancakes"]




for ( offering) in menuOffering {
    print ("\(offering)")
   for (item) in offering {   ERROR
       print ("\(item)")
    }

}

menuOffering
是一个
String
数组,因为您在引号中定义了它。在这种情况下,
drinks
breakfastEntre
。因此您试图在字符串上迭代并得到错误。相反,请按如下方式定义数组
menuOffering

var menuOffering = [drinks , breakfastEntree] // without quotes
现在它将是一组集合。 您修改的代码应该是:

var drinks: Set = ["water","milk","coffee","tea","diet coke"]
var breakfastEntree: Set  = ["eggs", "bacon", "sausage","pancakes"]

var menuOffering = [drinks , breakfastEntree]

for ( offering) in menuOffering {
   for (item) in offering {
       print ("\(item)")
    }

}

menuOffering是一个集合数组。如果没有引号,变量名现在可以访问集合中包含的值,并且可以在下面看到的嵌套形式中对它们进行迭代

let drinks: Set = ["water", "milk", "coffee", "tea", "diet coke"]
let breakfastEntree: Set = ["eggs", "bacon", "sausage", "pancakes"]

let menuOffering = [drinks, breakfastEntree]

for offering in menuOffering {
    for item in offering {
       print(item) 
    }
}
如果您不想在字符串中包含变量名,也可以打印出我在上面做过的变量,如下所示:

print("string: \(variableName)")

确保在“print”和括号之间不包含空格。

根据您的描述,这里可能不需要集合。您可能只需要数组,因此可以删除
:Set
,让类型推断为您完成工作。集合是无序的(因此可以按任何顺序打印),并且通常在集合可能非常大时使用,常见的操作是“测试X是否是集合的成员”。对于日常使用,您通常需要阵列(这就是为什么如果您不要求
:set
,您可以免费获得阵列)。对于您的实际问题,请参阅下面的triple.s。感谢您提供的解决方案…现在跟踪