【问题标题】:apple swift - referencing an array from a variableapple swift - 从变量引用数组
【发布时间】:2016-07-15 02:39:11
【问题描述】:

新手到 swift,一个人为的例子。 我有一系列菜单类别,这些类别又具有菜单项 我想遍历类别,然后读取项目子数组的元素。不知道将元素作为数组引用的语法

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

}

【问题讨论】:

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

标签: arrays swift


【解决方案1】:

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

}

【讨论】:

    【解决方案2】:

    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”和括号之间不要包含空格。

    【讨论】:

      猜你喜欢
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      相关资源
      最近更新 更多