2016-04-30 53 views
1

我有一個數組,取入2種類型,一個字符串和一個Int代碼看起來像這樣如何在swift中將int和字符串數組分配到一個字符串變量中?

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

我然後使用排序函數來安排,以便最高分數(INT)到最低與名稱旁邊。 (所以我可以將它分配給一個字符串並在AlertAction中顯示) 我已經在這裏看到它的某處,是的,我可以打印一個單一類型的String或Int等的數組到控制檯,但我該如何分配這個數組2種類型(Stings和Ints)添加到新的字符串變量中,以便我可以快速將它分配給AlertAction消息?或者甚至更好,我如何獲取每個條目的單個元素,以便將它分配給Var字符串?希望這是有道理的。謝謝

回答

3

這不是一個「兩種類型的數組」,它是一個元組的數組。您可以從陣列搶項目,並利用其各個部分是這樣的:

let (name, score) = totalDoubleSet1Array[i] 

這個任務後,你會得到兩個變量 - 即有i個元素的name的值String類型的name,和score類型爲Int,其值爲i-元素的分數。

如果你需要的是名字,你有兩個選擇:

  • 你可以使用let (name, _) = totalDoubleSet1Array[i]語法,或
  • 你可以使用let name = totalDoubleSet1Array[i].1來代替。

注意,你已經在使用第二語法在排序功能的比較表達式:

sort { $0.1 > $1.1 } 
+0

感謝您會嘗試一下並回復您。我是這個語言的新手,在學習,所以感謝您的洞察=)真棒! – Charlie

2

根據蘋果的元組不是爲數據結構的最佳選擇...

爲什麼不只是使用自定義結構

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 
+0

感謝您的洞察力,我正在學習這個語言,所以我會研究它。感謝幫助。 – Charlie

相關問題