【问题标题】:tuple not sorting in correct order (swift3)元组未按正确顺序排序(swift3)
【发布时间】:2017-10-27 03:49:58
【问题描述】:

我的代码应该使用元组对字符串和 int 进行排序。 String 应该按照 a-z 的顺序排列,而 int 应该按照 9-1 的顺序排列。现在没有订单被保留,也没有被排序。

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]()}

【问题讨论】:

  • 尝试使用switch 来创建您的流量控制 - 您将能够确保在每种情况下都返回正确的值。您甚至可以用逗号分隔多个条件以获得相同的返回值。
  • 请在您的问题中添加示例输入和预期输出,这将有助于确定您要做什么
  • @arunjos007 我添加了一张照片。你可以在图片中看到如果我输入 a,2 然后是 a,1。 a,2 仍然在 a,1 之前打印,所以它没有遵循排序逻辑。

标签: swift sorting struct tuples


【解决方案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)

【讨论】:

  • 如果数据已经定义,您有权这项工作。无论出于何种原因试图定义变量输入它都不起作用。
  • @Sam Burns,你能打印出这些 2.yourArray.append((txta.text!)) number.append(Int(txtb.text!)!)
  • 我明白你为什么要打印那些 2。唯一要打印的是 () 。
猜你喜欢
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多