我有一个数组,它接受2种类型,一个字符串和一个代码看起来像这样的Int
var totalDoubleSet1Array = [(Dante,10), (Cassius, 9), (Rio, 5)]
let sortedArray = totalDoubleSet1Array.sort { $0.1 > $1.1 }
然后我使用sort函数按顺序将最高分(Int)排列到最低分,并在其旁边显示名称。 (所以我可以将它分配给一个字符串并显示在AlertAction中) 我在这里看到它是的,我可以打印一个单一类型的String或Int等数组到控制台,但我怎么能将这两种类型的数组(Stings和Ints)分配给一个新的String变量,所以我可以请快速将它分配给AlertAction消息?或者甚至更好我如何获取每个条目的单个元素,以便将其分配给Var String?希望这是有道理的..谢谢
答案 0 :(得分:3)
这不是两种类型的"数组",它是元组的数组。你可以从数组中获取一个项目并采用它的各个部分:
let (name, score) = totalDoubleSet1Array[i]
完成此分配后,您将获得两个变量 - name
类型String
,其值为i
- 元素名称和score
输入值Int
,其值为i
- 元素得分。
如果你需要的只是名字,你有两个选择:
let (name, _) = totalDoubleSet1Array[i]
语法或let name = totalDoubleSet1Array[i].1
代替。请注意,您正在使用排序函数的比较表达式中的第二种语法:
sort { $0.1 > $1.1 }
答案 1 :(得分:2)
根据Apple元组不是数据结构的最佳选择......
为什么不使用自定义结构
struct Player {
var name : String
var score : Int
}
let totalDoubleSet1Array = [Player(name:"Dante", score:10), Player(name:"Cassius", score:9), Player(name:"Rio", score:5)]
let sortedArray = totalDoubleSet1Array.sort { $0.score > $1.score }
然后您可以轻松地访问名称,例如在表格视图中
let player = sortedArray[indexPath.row]
nameLabel.text = player.name