我的代码生成了一个元组,它显示在 View Controller 1 的标签上。我尝试将标签从 vc1 构造到 vc2,但没有保留顺序。我要做的就是复制确切的顺序和元组在 vc 1 上的显示方式,在 VC 2 上。
查看 Controller 1
import UIKit
var number = [Int]()
var yourArray = [String]()
class ViewController: UIViewController {
@IBOutlet var labez: UILabel!
@IBOutlet var textA: UITextField!
@IBOutlet var textB: UITextField!
@IBAction func move(_ sender: Any) {
bad.mm = [String( labez.text ?? "")]
}
@IBAction func store(_ sender: Any) {
yourArray.append((textA.text!))
number.append(Int(textB.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
}
})
print(sorted)
labez.text = sorted.map { " \($0)" }.joined(separator:"\n")
bad.mm = [String(describing: sorted.map { " \($0)" }.joined(separator:"\n")
)]
}
struct bad {
static var mm = [String]()
}
}
View Controller 2
import UIKit
class ViewController2: UIViewController {
@IBOutlet var benCarson: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
benCarson.text = (String(describing: ViewController.bad.mm))
}
}
除了我对您如何设计数据和命名约定的批评之外。我相信你想要的是ASSIGN你的bad.mm
而不是APPEND。
发生的情况是,当您第一次向 bad.mm
输入值时,它是 (a, 2)
。然后,当它被 附加 时,您将排序数组 (a, 1), (a, 2)
添加到现有字符串中,使其成为 (a, 2) , (a, 1), (a, 2)
如果您分配它,它现在将只是新的排序数组 (a, 1), (a, 2)
。
分配更改
bad.mm.append(String(describing: sorted.map { " \($0)" }.joined(separator:"\n"))
在ViewController
类中
bad.mm = String(describing: sorted.map { " \($0)" }.joined(separator:"\n")
在 ViewController
你的 move
函数做了类似的事情,它 APPENDS
到 bad.mm
你可能想分配。但是,您可以为它分配一个可选的 UITextField.Text
属性。使用 ??
运算符,您可以在为其提供默认值的同时为其提供 unwrap 选项。空字符串通常是一个很好的默认值。因此,为此我建议将 @IBAction func move
内的行更改为以下内容:
bad.mm = labez.text ?? ""
或者只是实际删除这一行,因为您在之前的函数中同时分配了 bad.mm 和 labez.text。但这就是您在文本周围获得 optional()
的原因。
这应该会给你想要的效果。您的“元组”未按正确顺序传递的原因是您没有将排序的元组从一个 VC 抓取到下一个 VC,而是将格式不正确的字符串从一个 VC 抓取到另一个 VC。考虑直接传递排序后的元组,然后在两个 ViewControllers
中分别格式化字符串以减少混淆。
关于ios - 通过时结构不保持元组顺序(swift3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46123985/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |