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

时间:2016-04-30 12:29:28

标签: arrays swift sorting element

我有一个数组,它接受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?希望这是有道理的..谢谢

2 个答案:

答案 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