2016-07-14 74 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)") 

確保不包括「打印」之間的空間和括號。