2016-07-14 65 views
2

新手迅速,一个人为的例子引用的数组。 我有菜单类别的阵列,这反过来又具有菜单项 欲遍历类,然后读取物品的子阵列的元件。不知道在语法线10引用的元素作为一个数组苹果迅速 - 从可变

ERROR,山口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)") 
    } 

} 
符合协议“序列” 为(项目)
+0

从你的描述来看,你可能不想在这里设置。你可能只想要数组,所以你可以放下':Set',让类型推断为你做好工作。集合是无序的(所以这些可以以任何顺序打印出来),并且通常在集合非常大并且常见操作是“测试X是集合中的成员”时使用。对于日常使用,你通常需要阵列(这就是为什么你可以免费获得它们,如果你不要求':Set')。对于您的实际问题,请参阅下面的triple.s。 –

+0

感谢您的解决方案....现在跟踪 – Jake

回答

6

menuOffering是因为你在引号中定义它String阵列。在这种情况下,drinksbreakfastEntree。所以你正在尝试遍历一个字符串并获取错误。相反,定义您的阵列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)") 
    } 

} 
1

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

确保不包括“打印”之间的空间和括号。