2017-08-24 117 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