2017-10-27 5 views
0

私のコードは、タプルを使用して文字列とintをソートすることになっています。ストリングはa-zから順番に想定され、intは9-1から順になっています。今すぐ注文は保管されず、ソートされていません。タプルが正しい順序でソートされていない(swift3)

import UIKit 
class ViewController: UIViewController { 
    var number = [Int]() 
    var yourArray = [String]() 
    @IBOutlet var txtb: UITextField! 
    @IBOutlet var txta: UITextField! 

    @IBAction func move(_ sender: Any) { 
     yourArray.append((txta.text!)) 
      number.append(Int(txtb.text!)!) 
      let tuples = zip(yourArray,number) 

      let sorted = tuples.sorted(by: { this, next in 
       if this.0 < next.0 { 
        return true 
      } else if this.0 == next.0 { 
        return this.1 < next.1 
       } else { 
        return false 
       }}) 
      bad.mm.append(String(describing: sorted.map { " \($0)" }.joined(separator:"\n"))) 

    }} 
struct bad { 
    static var mm = [String]()} 

enter image description here

+0

代わりに 'switch'を使用してフローコントロールを作成してみてください。すべての条件で正しい値を返すことができます。同じ戻り値に対して複数の条件をカンマで区切って指定することもできます。 – brandonscript

+0

サンプル入力と期待される出力を質問に追加してください。何をしようとしているのかを確認するのに役立ちます – arunjos007

+0

@ arunjos007私は写真を追加しました。あなたが写真で見ることができるのは、私がa、2、a、1をタイプする場合です。 a、2はまだソートロジックに従っていません。 –

答えて

1

これは作業のように見えます?。

let tuples:[(String,Int)] = [("baa",2), ("abc",50),("a",10)] 

let result = tuples.sorted(by: { this, next in 
    if this.0 < next.0 { 
    return true 
    } else if this.0 == next.0 { 
    return this.1 < next.1 
    } else { 
    return false 
    }}) 

print(result) 
+0

データが既に定義されている場合は、この作業が必要です。どのような理由であれ、変数入力を定義しようとすると、それは機能しません。 –

+0

@Sam Burns、これらを印刷することはできますか? yourArray.append((txta.text!)) number.append(Int(txtb.text!)!) – Yongjoon

+0

2を印刷する理由がわかります。その中で唯一印刷されているのは、両方で()です。 –

関連する問題