2011-01-23 155 views
0

我將Interface Builder中的arraycontroller(myArraycontroller)連接到由字典組成的數組(fileDictionariesArray)。這工作得很好,但是當我試圖訪問並列舉在arraycontroller [myArrayController arrangedObjects]的內容,我得到的含量爲零,直到我編程方式添加內容到我的arrayController這樣的:NSArraycontroller訪問內容

[myArrayController addObjects:fileDictionariesArray]; 

我已經做到了我能後循環所有的內容。問題是數組(fileDictionariesArray)已被添加兩次。一次通過IB綁定,一次通過addObjects。我只是不能訪問arrayContoller,直到我以編程方式設置內容。我可以刪除arrayController的內容,然後再編程設定這樣的:

[myArrayController setContent:nil]; 
[myArrayController addObjects:fileDictionariesArray]; 

其中給出的arrayController項目的正確數目,但它似乎並不像正確的方式做到這一點。我會很感激任何人都可以給我一個暗示,如何通過arrainedObjects數組訪問我的arrayController而不添加內容兩次。

謝謝你的幫助。乾杯,特隆德克里斯蒂安森

+0

當你說你得到零的內容,何時/如何,你如何檢查? – 2011-01-23 15:48:44

+0

您在此之前的評論發生了什麼?我調用[myArrayController addObjects:fileDictionariesArray];然後在那之後立即遍歷arrayController的元素:for(NSDictionary * file in myArray){NSLog ...}。數組的數量應該是20,而第一個元素包含null的是21。我想這可能是我添加一個數組到一個空的或空的陣列控制器,由awakeFromNib初始化的結果? – 2011-01-23 15:52:44

回答

0

根據你的文章和你和Bavarious之間的意見,我相信他不應該刪除他的答案。他問過你在哪裏調用這個代碼(來自-awakeFromNib?)。這是一個必須回答的問題。

如果你從-awakeFromNib調用它,那麼下一個問題是「筆尖中的對象是什麼?所有者?一些其他控制器?什麼是一個文檔?」

事情是數組控制器可能沒有時間在您調用代碼之前觀察對數組的「更改」。這就是爲什麼添加內容強制導致其被添加兩次的原因(因爲完成後,數組控制器會觀察其內容數組並再次拉入內容......此時您已將數組內容加倍) 。

如果你正在做立即啓動的東西,最好直接在陣列上操作。沒有什麼「錯誤的」或「骯髒的」,只要您在啓動完成後將責任留給陣列控制器即可。

很難得到更具體的,因爲我只是猜測你可能在做什麼。修改你的問題以包含一個更完整的描述,說明你的數組控制器如何適用於架構,你在啓動時對陣列做了什麼具體的事情等。丟失任何這些信息都會導致太多的猜測。