如何在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
我有一个接受 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