我不知道我是正确的这一措辞,但基本上我做这在我的主要应用程序的委托:

应用程序* = [[应用的alloc] initWithApplication:FULLPATH]

中的应用类有一个initWithApplication方法,该方法在应用中的路径,然后设置为APPPATH,姓名等然后,添加新的“应用程序”对象到应用程序的NSMutableArray属性:

if (app) [applications addObject: app];

在NSArrayController的内容阵列被结合到应用程序的NSMutableArray,然后将各种键(APPPATH,姓名等)在NSArrayController的被设置。然后,我有与结合到不同性质的各种列的表图,例如一列的名称,从路径的一列,等。

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

Application *app = [applications objectAtIndex:[tableView selectedRow]];

然后我只是用“app.appPath”作为当前选择的项目的路径中的参考。这工作得很好。问题是当表视图内容物使用filterPredicate过滤英寸基本上,它过滤掉在表格视图中的所有应用程序,只保留了那些与包含输入到搜索框中输入短语的名称。

在上面的方法不起作用,因为它得到在表视图的项的索引,并且由于所有的项目都没有在表视图,计数得到弄糟。例如说我有称为MyApp.app一个应用程序,其在所述应用程序阵列的索引25是项目。

上面的代码工作得很好,因为的tableView和应用阵列具有相同数量的对象。然而滤除表视图的内容中创建的对象的数量的差异,并且因此它启动了错误的应用程序。

我希望我的解释是不是太混乱,但它很难解释。解决此任何方式?

由于

有帮助吗?

解决方案

解决方案是为想要知道的人很简单:

[[arrayController选择] valueForKey:@ “APPPATH”]

HTH

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top