Binding 使用筛选器谓词在NSTableView中获取选定行索引时出现问题

Binding 使用筛选器谓词在NSTableView中获取选定行索引时出现问题,binding,nsmutablearray,nstableview,nsarraycontroller,Binding,Nsmutablearray,Nstableview,Nsarraycontroller,我不确定我的措辞是否正确,但基本上我是在我的主应用程序代理中这样做的: 应用程序*app=[[Application alloc]initWithApplication:fullPath] Application类有一个initWithApplication方法,该方法接受应用程序的路径,然后设置appPath、name等的属性。然后我将新的“app”对象添加到应用程序NSMutableArray: if (app) [applications addObject: app]; NSArray

我不确定我的措辞是否正确,但基本上我是在我的主应用程序代理中这样做的:

应用程序*app=[[Application alloc]initWithApplication:fullPath]

Application类有一个initWithApplication方法,该方法接受应用程序的路径,然后设置appPath、name等的属性。然后我将新的“app”对象添加到应用程序NSMutableArray:

if (app) [applications addObject: app];
NSArrayController的内容数组绑定到应用程序NSMutableArray,然后在NSArrayController中设置各种键(appPath、name等)。然后,我有一个表视图,其中包含绑定到不同属性的各种列,例如一列作为名称,一列来自路径,等等

然后,我有一个启动按钮,用于启动在表视图中选择的应用程序。为此,我使用以下代码:

Application *app = [applications objectAtIndex:[tableView selectedRow]];
然后我只使用“app.appPath”作为对当前所选项目路径的引用。这个很好用。当使用filterPredicate筛选表视图内容时,就会出现问题。基本上,它会过滤掉表视图中的所有应用程序,只留下那些名称包含输入到搜索框中的短语的应用程序

上述方法不起作用,因为它在表视图中获取项的索引,并且由于所有项都不在表视图中,因此计数会出错。例如,假设我有一个名为MyApp.app的应用程序,它位于应用程序数组的索引25处

上面的代码运行良好,因为tableView和应用程序数组具有相同数量的对象。但是,过滤掉表视图的内容会在对象数量上产生差异,因此会启动错误的应用程序

我希望我的解释不会太混乱,但很难解释。有办法吗


谢谢

对于任何想知道的人来说,解决方案都非常简单:

[[arrayController选择]valueForKey:@“应用路径”]