如何在swift中将一组int和字符串分配给一个字符串变量?

How to assign an array of int and strings into one string variable in swift?

我有一个接受 2 种类型的数组,一个 String 和一个 Int 代码看起来像这样

var totalDoubleSet1Array = [(Dante,10), (Cassius, 9), (Rio, 5)]
let sortedArray = totalDoubleSet1Array.sort { [=11=].1 > .1 }

然后我使用排序功能从最高分(Int)到最低分的顺序排列,旁边是名字。 (所以我可以将其分配给一个字符串并显示在 AlertAction 中) 我在这里的某个地方看到它是的,我可以将单一类型的字符串或 Int 等的数组打印到控制台,但是我如何将这两种类型的数组(Stings 和 Ints)分配给一个新的字符串变量,这样我就可以请将其分配给 swift 中的 AlertAction 消息?或者更好的是,如何获取每个条目的单个元素,以便将其分配给 Var 字符串?希望这是有道理的。谢谢

这不是 "array of two types",它是 元组 的数组。您可以从数组中获取一个项目并像这样获取其各个部分:

let (name, score) = totalDoubleSet1Array[i]

在这个赋值之后你会得到两个变量 - name 类型 String 的值为 i-th 元素的名称,score 类型 Int,其值为第 i 个元素的分数。

如果您只需要名字,您有两个选择:

  • 您可以使用 let (name, _) = totalDoubleSet1Array[i] 语法,或者
  • 您可以改用 let name = totalDoubleSet1Array[i].1

请注意,您在排序函数的比较表达式中已经使用了第二种语法:

sort { [=11=].1 > .1 }

根据 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 { [=10=].score > .score }

然后您可以在 table 视图

中轻松访问该名称
let player = sortedArray[indexPath.row]    
nameLabel.text = player.name