2011-05-29 40 views
0

我創建了一個nsarraycontroller來在我的nstableview上顯示它的數據。這是行得通的。但我現在如何修改這些數據?如何編輯NSArrayController的數據(或使用其他內容)

[arrayController addObject:[...]] 

增加了一個對象,我該如何恢復它?

我想:

NSMutableArray *data = [arrayController mutableArrayValueForKey:@"column1"];] 

但後來我得到這個錯誤

2011-05-29 19:25:50.125 TestApp[1665:903] [<NSArrayController 0x113808500> valueForUndefinedKey:]: this class is not key value coding-compliant for the key column1. 

(中代表在我看來,行我arraycontroller對象是一個類(名爲FileEntry的的),由4屬性和我作爲關鍵添加到我的nsarraycontroller)

我以爲kvc compilant意味着每個屬性都有一個getter和setter? (而不是什麼屬性呢?)。

我測試我的課,如果我可以使用這個功能:

FileEntry *entry = [[FileEntry alloc] initWithUrl:@"test"]; //(this adds the string "test" to the property "fileurl") 
NSLog(@"%@\n", [entry valueForKey:@"fileurl"]); 

and it returns: 
> 2011-05-29 19:31:54.760 TestApp[1718:903] test 

和它的作品。那麼我的班級如何不能成爲kvc-compilant?

無論如何,我也嘗試使用tableviews數據源,而不能得到這兩個函數的工作。那會比nsarraycontroller更有用嗎?是否可以修改nsarraycontroller的數據?

回答

2

通常你需要一個競爭數組來處理NSArrayController,所以你可以簡單地使用這個數組並使用NSMutableArray方法。例如,您在MyController.h中使用其setter和getter方法聲明瞭一個數組,並且您只需將數組控制器的競爭數組綁定到它。然後你可以用兩個按鈕來添加和刪除數組控制器的方法來添加一些東西。現在您必須將列的值綁定到你的數組控制器託管對象的FileEntry.fileurl,現在你應該可以添加東西到表視圖。您還可以在表格視圖中編輯名稱。如果你想在你的程序的某個地方得到一些東西,你可以使用你的表格視圖的插座,如下所示:

NSInteger row = [myTableViewOutlet selectedRow]; 
FileEntry* myEntry = [myArray objectAtIndex:row]; 
+0

很酷的感謝,現在它的作品!我綁定我的數組控制器到我的appdelegate中的數組(我之前做過,但我認爲我的錯誤是初始化它錯誤),現在可以添加行到我的tableview通過將它們添加到arraycontroller。我覺得有點奇怪,加入到arraycontroller,在數組中編輯... – 2011-05-29 19:58:44

相關問題