【问题标题】:How to assign an array of int and strings into one string variable in swift?如何在swift中将一组int和字符串分配给一个字符串变量?
【发布时间】:2016-04-30 12:29:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: arrays swift sorting element


    【解决方案1】:

    这不是“两种类型的数组”,它是一个元组的数组。您可以从数组中抓取一个项目,并像这样获取它的各个部分:

    let (name, score) = totalDoubleSet1Array[i]
    

    在此分配之后,您将获得两个变量 - String 类型的 name,其值为 i-th 元素的名称,score 类型为 Int,其值为 i -th 元素的分数。

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

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

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

    sort { $0.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
    

    【讨论】:

    • 感谢您的洞察力,我正在学习这个语言,所以会研究它。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2020-03-12
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    相关资源
    最近更新 更多