2017-10-27 1 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 – Yongjoon

+0

왜 인쇄하고 싶은지 알 수 있습니다. 그 중 유일하게 인쇄되는 것은 둘 다에()입니다. –

관련 문제