我正在创建一个类,我需要传递一个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)'
有谁知道实现这一目标的最佳方法是什么?
答案 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