Fre*_*Lee 3 arrays sorting tuples swift
如何实现(或创建)一组元组列表的数组?
从我的代码中收集了以下内容.
基本上我创建了一个元组数组并通过for循环填充它; 之后我试着对它进行排序.
var myStringArray: (String,Int)[]? = nil
...
myStringArray += (kind,number)
...
myStringArray.sort{$0 > $1}
Run Code Online (Sandbox Code Playgroud)
这是我在构建之前给我的Xcode:
test.swift:57:9:'(String,Int)[]?' 没有名为'sort'的成员
dre*_*wag 11
你有两个问题.首先,myStringArray是一个Optional,你必须"解开"它,然后才能调用方法.其次,>元组没有运算符,你必须自己进行比较
if let myStringArray = myStringArray {
myStringArray.sort { $0.0 == $1.0 ? $0.1 > $1.1 : $0.0 > $1.0 }
}
Run Code Online (Sandbox Code Playgroud)
实际上,我正在寻找的是具有最大整数值的元组:
var myStringArray: (String,Int)[]? = nil
...
println("myStringArray: \(myStringArray)\n")
myStringArray!.sort {$0.1 > $1.1}
println("myStringArray: \(myStringArray)\n")
...
Run Code Online (Sandbox Code Playgroud)
原版的:
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),(One,1),(Square,1),( Fibonacci,1),(Fibonacci,1)]
...所以它是具有最大整数的"正方形":25.