【问题标题】:Swift 2.1 New Way to Initialize String Array?Swift 2.1 初始化字符串数组的新方法?
【发布时间】:2015-11-23 19:51:04
【问题描述】:

在我的旧 Swift 1 代码中,我可以这样做:

class MyArrayLists {

    var myarray = [String, String]

    init(){

        myarray.append("First String", "Second String.")
    }

}

现在打开我的代码并尝试将其转换为 2.1 后,它告诉我我不能再这样做了。在我们看到的声明旁边:

预期的成员名称或构造函数调用

在我看到的附加语句旁边:

不能使用类型(字符串,字符串)的参数调用追加

发生了什么变化?

【问题讨论】:

  • 我的数组应该是什么?一个字符串数组,一个 2-string-tuples 数组?
  • 嘿,您似乎想使用字典,在这种情况下,将 var myarray = [String, String] 替换为 var myarray = [String: String]() 添加您可以使用 myarray[ "DictID"] = "DictValue"
  • 不,我需要一个数组中的两个字符串,它不是键和值之类的东西,它是两个值。

标签: ios arrays swift swift2


【解决方案1】:

使用 Swift 2,您必须在括号中明确声明数组中的对象类型:

class MyArrayLists {

    var myarray: [(String, String)] = [(String, String)]()

    init(){

        self.myarray.append(("First String", "Second String."))
    }

}

【讨论】:

    【解决方案2】:

    编译器用来推断那个

    [String, String]
    

    实际上是一个元组数组:

    [(String, String)]
    

    以及附加一对值

    myarray.append("First String", "Second String.")
    

    是幕后实际发生的事情的语法糖:

    myarray.append(("First String", "Second String."))
    

    但现在这种自动转换已被弃用。

    解决方案是声明正确的类型,并附加一个正确的元组:

    var myarray = [(String, String)]()
    
    myarray.append(("First String", "Second String."))
    

    【讨论】:

      猜你喜欢
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2011-05-15
      相关资源
      最近更新 更多