所以,我正在制作一个需要选择各种东西的应用程序。您可以通过向 UITableView 的右侧滑动来选择它们。我正在使用UIContextualAction,并且正在使用switch语句对函数和可执行语句进行排序。一旦选择了 UITableView 单元格,它就会运行我的一个开关语句。这是来自所选的 indexPath.row。现在,一旦选择了每个对象,它将名称附加到数组中。
我的问题:一旦对象被附加,数组就不会添加。例如,我选择Snapchat。该数组中有"Snapchat"。如果我也选择Instagram,数组应该附加"Instagram"。它确实如此,但它也忘记了其中的"Snapchat",并且当它打印时,它只打印 1 个选定的对象。(这是我选择的最后一个)
我怎样才能制作一个数组,我可以在其中添加更多对象而不会忘记
我已经查看了在所选的表视图单元格上执行 if 语句。没有任何效果,并且想知道我如何解决此问题或找到解决方案
var array = [String]()
var choice = indexPath.row
switch choice {
case 0:
array.append("Instagram")
print(array)
case 1:
array.append("Snapchat")
print(array)
case 2:
array.append("VSCO")
print(array)
default:
print("Error")
print(array)
这是我选择多个并尝试附加数组时得到的。
["Instagram"]
["Snapchat"]
["VSCO"]
Error
如您所见,它们不是数组形式。
这就是你所做的
func someFunc() {
var array = [String]()
var choice = indexPath.row
switch choice {
case 0:
array.append("Instagram")
print(array)
case 1:
array.append("Snapchat")
print(array)
case 2:
array.append("VSCO")
print(array)
default:
print("Error")
print(array)
}
您已在将对象添加到数组的函数中声明了要追加到的数组。 每次添加某些内容时,都会覆盖您刚刚输入的对象。
- 函数创建数组
- 将对象添加到数组
函数结束
函数创建数组(覆盖旧数组)
- 将对象添加到数组(现在仅在数组内使用单个对象)
- 函数结束
只需将阵列移到函数之外var array = [String]()
即可。
var array = [String]()
override func viewDidLoad() {
super.viewDidLoad()
}
func someFunc() {
var choice = indexPath.row
switch choice {
case 0:
self.array.append("Instagram")
print(array)
case 1:
self.array.append("Snapchat")
print(array)
case 2:
self.array.append("VSCO")
print(array)
default:
print("Error")
print(array)
}
另外,在将数组命名为"array"时要小心,最佳做法是给数组一个更有意义的名称
它确实添加了,但是您的var array = [String]()
是一个上下文变量,一旦函数结束,它就会变得deinit
,这是您的结构:
--> Controller
--> Function
--> Array
将var array = [String]()
放在控制器上而不是函数上,如下所示:
--> Controller
--> Array
--> Function
无需更改数组声明位置以外的任何内容。
注意:您以数组形式打印它们,但长度为 == 1。