2011-05-29 119 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

相关问题