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