通过 If 语句追加数组
Append Array Through If Statement
所以,我正在制作一个需要 select 各种东西的应用程序。您可以通过向 UITableView 的右侧滑动来 select 这些。我正在使用 UIContextualAction 并使用 switch 语句来排序函数和可执行语句。一旦 UITableView Cell 被 selected,它就会 运行 离开我的一个 switch 语句。这是从 indexPath.row 中选择的。现在,一旦每个对象都被 selected,它会将名称附加到数组中。
我的问题:添加对象后,数组不会添加。例如,我选择 Snapchat。该数组中有 "Snapchat"。如果我也选择 Instagram,数组应该附加 "Instagram"。它确实如此,但它也忘记了其中的 "Snapchat",并且当它打印时,它只打印 1 个 selected 对象。 (这是我选的最后一个)
我怎样才能创建一个数组,我可以在其中添加更多对象而不会忘记
我看过在 selected 的 tableview 单元格上执行 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)
这是我 select 多个并尝试追加数组时得到的结果。
["Instagram"]
["Snapchat"]
["VSCO"]
Error
如你所见,它们不是数组形式。
它确实添加了,但是你的var array = [String]()
是一个上下文变量,一旦函数结束它就会得到deinit
,这是你的结构:
--> Controller
--> Function
--> Array
将 var array = [String]()
放在控制器上而不是函数上,如下所示:
--> Controller
--> Array
--> Function
除了数组声明位置外,无需更改任何内容。
注意:您正在以数组形式打印它们,但长度 == 1。
这就是你所做的
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',最好给数组起一个更有意义的名称
所以,我正在制作一个需要 select 各种东西的应用程序。您可以通过向 UITableView 的右侧滑动来 select 这些。我正在使用 UIContextualAction 并使用 switch 语句来排序函数和可执行语句。一旦 UITableView Cell 被 selected,它就会 运行 离开我的一个 switch 语句。这是从 indexPath.row 中选择的。现在,一旦每个对象都被 selected,它会将名称附加到数组中。
我的问题:添加对象后,数组不会添加。例如,我选择 Snapchat。该数组中有 "Snapchat"。如果我也选择 Instagram,数组应该附加 "Instagram"。它确实如此,但它也忘记了其中的 "Snapchat",并且当它打印时,它只打印 1 个 selected 对象。 (这是我选的最后一个)
我怎样才能创建一个数组,我可以在其中添加更多对象而不会忘记
我看过在 selected 的 tableview 单元格上执行 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)
这是我 select 多个并尝试追加数组时得到的结果。
["Instagram"]
["Snapchat"]
["VSCO"]
Error
如你所见,它们不是数组形式。
它确实添加了,但是你的var array = [String]()
是一个上下文变量,一旦函数结束它就会得到deinit
,这是你的结构:
--> Controller
--> Function
--> Array
将 var array = [String]()
放在控制器上而不是函数上,如下所示:
--> Controller
--> Array
--> Function
除了数组声明位置外,无需更改任何内容。
注意:您正在以数组形式打印它们,但长度 == 1。
这就是你所做的
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',最好给数组起一个更有意义的名称