如何从NSArrayController和Core数据中获取所选行的属性?

时间:2014-02-15 13:18:17

标签: objective-c core-data

我的表上有一个连接到NSArrayController的表。我知道如何挂钩绑定并控制拖动到arraycontroller的删除操作。但我需要做的是从核心数据中获取表中所选行的特定属性,如果需要某些条件,则执行并删除该行。我也删除了删除部分。

我可以获得所选行:

NSUInteger packageIndex = [self.packagesTableView selectedRow];
    NSArray *selectedObjects = [[self.meteorPakcagesArrayController arrangedObjects] objectAtIndex:packageIndex];
    NSLog(@"pckg: %@", selectedObjects);

在日志中我得到了:

2014-02-15 08:01:43.067 Orbit[10320:303] pckg: <MeteorPackage: 0x6080000adaa0> (entity: MeteorPackage; id: 0x608000221060 <x-coredata://7BDCF290-6A40-4BAD-A8BE-5819CCB99DEA/MeteorPackage/p118> ; data: {
    name = "preserve-inputs";
    project = "0x608000220fe0 <x-coredata://7BDCF290-6A40-4BAD-A8BE-5819CCB99DEA/Project/p116>";
    type = meteor;
})

但我无法弄清楚如何从数组中获取特定属性。我想得到名字和类型。我试过像这样拉出数据:

MeteorPackage *pckg = [selectedObjects objectAtIndex:0];
NSLog(@"pckg: %@", pckg);

但是我收到以下错误:

-[MeteorPackage objectAtIndex:]: unrecognized selector sent to instance 0x6080002a1aa0

我显然犯了一个菜鸟错误,因为我不熟悉Objective-c和核心数据。那么如何获得这些属性呢?

1 个答案:

答案 0 :(得分:1)

您需要替换此

NSArray *selectedObjects = [[self.meteorPakcagesArrayController arrangedObjects] objectAtIndex:packageIndex];
NSLog(@"pckg: %@", selectedObjects);

用这个

MeteorPackage *selectedPackage = [[self.meteorPakcagesArrayController arrangedObjects] objectAtIndex:packageIndex];
NSLog(@"pckg: %@", selectedPackage);

因为objectAtIndex方法已经返回了MeteorPackage对象...而不是数组