如何在Swift代码中将数组附加到数组对象?

前端之家收集整理的这篇文章主要介绍了如何在Swift代码中将数组附加到数组对象?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Array of tuples in Swift3
搜索了谷歌,但我无法找到一种方法添加新元素到Swift的数组对象.
错误代码“缺少参数fot参数”名称“在调用”出现.
我的代码是遵循的.
  1. var arrayObj: [(id: Int,name: String)] = []
  2. var idInt: Int = 1
  3. var nameString: String = "hoge"
  4. arrayObj.append(( // ----> "Missing arguments fot parameter "name" in call"
  5. id: idInt,name: nameString
  6. ))

如果你知道任何解决方案,我会很高兴.
谢谢.

只需将元组分配给一个临时变量:
  1. let tuple = (
  2. id: idInt,name: nameString
  3. )
  4.  
  5. arrayObj.append(tuple)

不知道为什么它不工作,只是检查一个功能,像这样:

  1. var array: [(param1: Int,param2: String)] = []
  2.  
  3. func test(x: (param1: Int,param2: String)) {
  4. println(x)
  5. }
  6.  
  7. test((param1: 2,param2: "Test"))
  8. array.append((param1: 2,param2: "Test"))

结果:功能正常,数组方法不行.

更新:在操场上试过这段代码

  1. struct Test<T> {
  2. func doSomething(param: T) {
  3. println(param)
  4. }
  5. }
  6.  
  7. var test = Test<(param1: Int,param2: String)>()
  8. let tuple = (param1: 2,param2: "Test")
  9. test.doSomething(tuple)
  10. test.doSomething((param1: 2,param2: "Test"))

结果:当将元组变量传递给doSomething时,它起作用 – 尽管编译器消息不同,但是使用文字元组,而不是:

  1. '((param1: Int,param2: String)) ->()' does not have a member named 'doSomething'

显然,将一个文字元组传递给通用类的方法(其中元组是通用类型)的编译器未正确处理.

更新#2:我重复了一个非泛型类的测试,但是使用通用的方法,在这种情况下它工作:

  1. struct Test {
  2. func doSomething<T>(param: T) {
  3. println(param)
  4. }
  5. }
  6.  
  7. var test = Test()
  8. let tuple = (param1: 2,param2: "Test"))

所以这绝对是一个与泛型类有关的问题.

猜你在找的Swift相关文章