【问题标题】:Swift- How to add onto arraylist next index everytime save button is pressedSwift-每次按下保存按钮时如何将下一个索引添加到arraylist
【发布时间】:2018-03-19 12:52:04
【问题描述】:

您好,我的问题是如何在每次按下保存时将包含所有文本字段输入的字符串值存储到具有新索引的数组中。我在下面创建了一些代码,但我认为它会覆盖第一个索引。

@IBAction func Save (_ sender: UIButton){
let firstextfield = textfield1.text
let secondtextfield = textfield2.text

let allText = firsttextfield! + "," + secondtextfield!
var myArray = [String]()
var index : Int = 0

while (myArray.count) <= index {
   myArray.insert(allText, at: index)

}
index +=


for element in myArray{
 print(element)
 }


}

输入:firsttextfield = 9.22 和 secondtextfield = 91.2 然后按下保存按钮。

输出:

Optional ("9.22,91.2")
Optional ("")

如果我将我的文本字段的值更改为 firsttextfield = 0.2 和 secondtextfield = 20.2

我得到输出:

Optional ("0.2,20.2")
Optional ("")

我不希望它覆盖数组,而是将其添加到预期的输出中:

Optional ("9.22,91.2")
Optional ("0.2,20.2")

欢迎任何提示,因为我是编码新手。

【问题讨论】:

  • 我认为你可以将值附加到数组中吗?
  • @Jaydip 它应用了一个空字符串值,但我希望它在下一个索引中附加一个新字符串,而不是覆盖当前的 1
  • 但是为什么要追加空呢?
  • @Jaydip 啊,这是一个错误,它应该附加 allText
  • 哦,兄弟,我明白了,我遇到了你的问题,

标签: arrays swift arraylist uitextfield


【解决方案1】:

//只是在按钮动作之外声明

var index = 0
var myArray = [String?]()

//按钮动作

@IBAction func btnShareTapped(_ sender: UIButton) {


    let firstextfield = "textfield1.text"
    let secondtextfield = "textfield2.text"

    let allText = firstextfield + "," + secondtextfield

    while (myArray.count) <= index {
        myArray.append("")
    }

    myArray.insert(allText, at: index)
    index = index + 1

    for element in myArray{
        print(element)
    }
    print(myArray)
}

输出

[Optional("textfield1.text,textfield2.text"), Optional("")]
[Optional("textfield1.text,textfield2.text"), Optional("textfield1.text,textfield2.text"), Optional("")]

//你最后的评论答案是

let a : String = myArray[0]!
let b = a.split(separator: ",")
label.text = b[0] as! String
label1.text = b[1] as! String

【讨论】:

  • 如果我将 myArray.append("") 替换为 myArray.insert(allText, at : index) 是否仍然有效,还是必须先追加才能使用插入?
  • 如果您删除附加代码仍然可以正常工作,我仍然不明白您为什么要编写附加代码,因为还不需要
  • 我只是用插入线替换了追加,它工作得很好。
  • 另外,如果我将此数组发送到另一个视图控制器,我将如何遍历每个索引,将 firsttextfield 和 secondtextfield 的值放入自动创建的标签中
  • 我认为你的想法很好,但你编写代码的方式是错误的,使用 arrayOfDictionary 让一切变得简单,这很容易。
【解决方案2】:

我认为你在这里清空数组:

var myArray = [String?]()
var index = 0

while (myArray.count) <= index {
myArray.append("")

}

在函数外声明并初始化它,然后用它来插入值到数组中:

let allText = firsttextfield! + "," + secondtextfield!

anArray.append(allText)

【讨论】:

  • 嗨,我已将要插入的行放在我的 while 语句中,但是如何修复它以便每次按下按钮时索引都会增加 1。目前它一直覆盖当前的内部索引 0,这表明索引没有增加。我该如何解决这个问题,所以一旦第二次按下保存,它将新数据添加到 1
  • 看我编辑的答案,你不需要增加索引。
  • .append() 总是将值放在数组的末尾。而.insert() 将其放置在数组中的给定位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 2021-03-22
  • 2018-06-16
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
相关资源
最近更新 更多