【问题标题】:How to edit data of NSArrayController (or to use something else)如何编辑 NSArrayController 的数据(或使用其他东西)
【发布时间】:2011-05-29 17:42:26
【问题描述】:

我创建了一个 nsarraycontroller 来在我的 nstableview 上显示它的数据。这是有效的。但是我现在如何修改这些数据呢?

[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 中的对象代表我视图中的行是一个由4 个属性组成的类(名为FileEntry),我将这些作为键添加到我的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 数据源,但无法让这 2 个函数正常工作。那会比nsarraycontroller 更有用吗?甚至可以修改nsarraycontroller的数据吗?

【问题讨论】:

    标签: objective-c cocoa edit nsarraycontroller key-value-coding


    【解决方案1】:

    通常你需要一个 NSArrayController 处理的竞争数组,所以你可以简单地获取这个数组并使用 NSMutableArray 方法。例如,您在 MyController.h 中有一个数组声明及其 setter 和 getter 方法,您只需要将数组控制器的竞争数组绑定到它。然后你可以为数组控制器的添加和删除方法拿两个按钮来添加一些东西。现在您必须将列的值绑定到例如数组控制器管理对象的 FileEntry.fileurl,现在您应该能够将内容添加到表视图中。您还可以在表格视图中编辑名称。如果你想在程序的某个地方从数组中取出一些东西,你可以使用你的表视图的出口,如下所示:

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

    【讨论】:

    • 非常感谢,现在可以使用了!我将我的arraycontroller 绑定到我的appdelegate 中的一个数组(我之前做过,但我认为我的错误是初始化错误),现在可以通过将行添加到arraycontroller 来将行添加到我的tableview。我觉得有点奇怪,添加到arraycontroller,在array 中编辑...
    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多