如何对元组数组进行排序?

时间:2014-06-15 22:03:45

标签: arrays sorting tuples swift

如何实现(或创建)一组元组列表的数组呢? 从我的代码中收集了以下内容。

本质上我创建了一系列元组 并通过for循环填充它;之后我试着对它进行排序。

var myStringArray: (String,Int)[]? = nil
...

myStringArray += (kind,number)
...

myStringArray.sort{$0 > $1}

这是我在构建之前给我的Xcode:

  

test.swift:57:9:'(String,Int)[]?'没有名为的成员   '排序'

2 个答案:

答案 0 :(得分:11)

你有两个问题。首先,myStringArrayOptional,您必须先“解包”它,然后才能调用它上面的方法。其次,元组没有>运算符,你必须自己进行比较

if let myStringArray = myStringArray {
    myStringArray.sort { $0.0 == $1.0 ? $0.1 > $1.1 : $0.0 > $1.0 }
}

答案 1 :(得分:6)

实际上,我在寻找的是具有最大整数值的元组:

var myStringArray: (String,Int)[]? = nil
...
println("myStringArray: \(myStringArray)\n")
myStringArray!.sort {$0.1 > $1.1}
println("myStringArray: \(myStringArray)\n")
...

<强>原始

  

myStringArray:[(One,1),(Square,1),(Square,4),(Square,9),   (Square,16),(Square,25),(Prime,2),(Prime,3),(Prime,5),   (Prime,7),(Prime,11),(Prime,13),(Fibonacci,1),(Fibonacci,1),   (Fibonacci,2),(Fibonacci,3),(Fibonacci,5),(Fibonacci,8)]

已排序:

  

myStringArray:[(Square,25),(Square,16),(Prime,13),(Prime,11),   (Square,9),(Fibonacci,8),(Prime,7),(Prime,5),(Fibonacci,5),   (Square,4),(Prime,3),(Fibonacci,3),(Prime,2),(Fibonacci,2),   (一,1),(Square,1),(Fibonacci,1),(Fibonacci,1)]

......所以&#34; square&#34;具有最大整数:25。