2017-08-24 70 views
0

我有一个tabbarcontroller与两个视图控制器。在我的tabbarcontroller类中我有一个数组tasks = [Task]()(在每个视图控制器相同)。任务从文档目录加载NSKeyedUnarchiver。TabBarController:添加/从阵列中删除

我用tasks = (tabBarController as! TabBarController).tasks在每个视图控制器中抓取任务。

在每个视图控制器中,我可以更改任务的属性,但不能添加(在视图控制器1中)或删除(在视图控制器2中)任务。

更改属性后,我保存任务(在每个视图控制器中)。

如何添加/删除任务?

谢谢。

回答

0

数组是Swift中的值类型,因此当您修改tasks时,您正在修改tabBarController.tasks的副本。当您随后保存tabBarController.tasks时,您正在保存原始未修改的阵列。

您需要直接在标签栏控制器上更新tasks阵列

var tabBarController = tabBarController as! TabBarController 
tabBarController.tasks.append(newTask) 

想必对象的tasks阵列Class情况下(我会打电话给他们Task对象),这意味着它们是参考类型。 tasks数组和tabBarController.tasks数组都将保持对同一个对象的引用,因此,如果只是修改Task属性,则无论您用于访问该对象的哪个数组,都要修改该对象的同一个实例。

这就是保存属性更改的原因,但添加/删除不是。

+0

好的。我会试试它,但为什么它会保存属性的值?在tabbarcontroller中,我加载了一次任务,并将这些属性保存到视图控制器中的副本中。对于属性都很好,只有添加/删除不起作用。 – EmKay

+0

查看我的更新来解释这个 – Paulw11

+0

谢谢。现在我明白了。 – EmKay