我有一个带有两个视图控制器的tabbarcontroller。在我的tabbarcontroller类中,我有一个数组tasks = [Task]()
(在每个视图控制器中都相同)。任务从文档目录中加载NSKeyedUnarchiver。
我使用tasks = (tabBarController as! TabBarController).tasks
在每个视图控制器中抓取任务。
在每个视图控制器中,我可以更改任务的属性,但是我无法添加(在视图控制器1中)或删除(在视图控制器2中)任务。
更改属性后,我保存任务(在每个视图控制器中)。
如何添加/删除任务?
感谢。
答案 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
属性,则修改相同的实例对象,无论您使用哪个数组访问该对象。
这就是保存属性更改的原因,但添加/删除不是。