TabBarController:添加/从阵列中删除
问题描述:
我有一个tabbarcontroller与两个视图控制器。在我的tabbarcontroller类中我有一个数组tasks = [Task]()
(在每个视图控制器相同)。任务从文档目录加载NSKeyedUnarchiver。TabBarController:添加/从阵列中删除
我用tasks = (tabBarController as! TabBarController).tasks
在每个视图控制器中抓取任务。
在每个视图控制器中,我可以更改任务的属性,但不能添加(在视图控制器1中)或删除(在视图控制器2中)任务。
更改属性后,我保存任务(在每个视图控制器中)。
如何添加/删除任务?
谢谢。
答
数组是Swift中的值类型,因此当您修改tasks
时,您正在修改tabBarController.tasks
的副本。当您随后保存tabBarController.tasks
时,您正在保存原始未修改的阵列。
您需要直接在标签栏控制器上更新tasks
阵列
var tabBarController = tabBarController as! TabBarController
tabBarController.tasks.append(newTask)
想必内对象的tasks
阵列Class
情况下(我会打电话给他们Task
对象),这意味着它们是参考类型。 tasks
数组和tabBarController.tasks
数组都将保持对同一个对象的引用,因此,如果只是修改Task
属性,则无论您用于访问该对象的哪个数组,都要修改该对象的同一个实例。
这就是保存属性更改的原因,但添加/删除不是。
好的。我会试试它,但为什么它会保存属性的值?在tabbarcontroller中,我加载了一次任务,并将这些属性保存到视图控制器中的副本中。对于属性都很好,只有添加/删除不起作用。 – EmKay
查看我的更新来解释这个 – Paulw11
谢谢。现在我明白了。 – EmKay