我需要传递一个String和Any数组作为参数

时间:2018-02-27 16:01:05

标签: swift generics

我正在创建一个类,我需要传递一个2位数的字符串数组,因为每次调用该函数时,数据类型都可能不同。例如:

First call, data type is of type [(Int, String)]
second call, data type is of type  [(date, String)]
third call, , data type is of type  [(custom Object, String)]
etc...

我没有在函数内部使用Any数据。我只需要显示String部分并返回所选元素:

return (any,String)

我查看了元组和泛型,但没有成功,不断收到错误,例如: Cannot express tuple conversion '(Int, String)' to '(Any, String)'

有谁知道实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

为什么不让te函数接受一个(String,Any)元组数组并返回相同的元组,如果你只是使用String部分,则不需要转换任何东西。

一个例子

typealias StringAny = (String, Any)

func test(_ data: [StringAny]) -> StringAny {
  print(data[0].0)

  return data[0]
}

然后我用

成功测试了它
func main() {
  let data1: [StringAny] = [("One", 1)]
  let data2: [StringAny] = [("Today", Date())]

  if let intValue = test(data1).1 as? Int {
    print("Int is \(intValue)")
  }
  if let dateValue = test(data2).1 as? Date {
    print("Date is \(dateValue)")
  }
}

main()

我现在看到,与你的例子相比,我在元组中交换了String和Any。

这是我运行示例时的输出

[Running] swift“/Users/joakim/Development/test.swift”

Int是1

今天

日期是2018-02-27 16:29:00 +0000

[完成]在0.455秒内退出代码= 0