TabBarController:从数组中添加/删除

时间:2017-08-24 12:11:55

标签: ios arrays swift uitabbarcontroller

我有一个带有两个视图控制器的tabbarcontroller。在我的tabbarcontroller类中,我有一个数组tasks = [Task]()(在每个视图控制器中都相同)。任务从文档目录中加载NSKeyedUnarchiver。

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

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

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

如何添加/删除任务?

感谢。

1 个答案:

答案 0 :(得分:0)

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

您需要直接在标签栏控制器

上更新tasks数组
var tabBarController = tabBarController as! TabBarController
tabBarController.tasks.append(newTask)

据推测<{1}}数组中的 对象是tasks个实例(我称之为Class个对象),这意味着它们是参考类型。 Task数组和tasks数组都将保存对相同tabBarController.tasks对象的引用,因此如果您只是修改Task属性,则修改相同的实例对象,无论您使用哪个数组访问该对象。

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