gpt4 book ai didi

ios - 结构在传递时不保持元组顺序(swift3)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:08 24 4
gpt4 key购买 nike

我的代码生成了一个元组,显示在 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]()

}
}

enter image description here

View Controller 2

    import UIKit

class ViewController2: UIViewController {

@IBOutlet var benCarson: UILabel!
override func viewDidLoad() {
super.viewDidLoad()

benCarson.text = (String(describing: ViewController.bad.mm))
}





}

enter image description here

最佳答案

除了我对您如何设计数据和命名约定的批评。我相信您想要的是 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 函数执行类似的操作,它APPENDSbad.mm,您可能在其中想分配。但是,您可以为其分配可选的 UITextField.Text 属性。使用 ?? 运算符,您可以在为其提供默认值的同时展开此可选。空字符串通常是一个很好的默认值。因此,为此我建议将 @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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com