0

假设我正在制作一个应用程序,您可以在其中将汽车制造商添加到主视图控制器中,这是一个UITableView,在第二个视图控制器(也是一个UITableView)上,您可以在该制造商名称下添加汽车型号。

现在我的问题很简单,我可以添加制造商,但是当我按下任何制造商名称时,我会得到包含所有制造商所有型号的第二个表格视图。

我尝试使用可能的谓词,过滤 mutablearray 然后将其传递给第二个视图控制器。没有成功:(

 NSPredicate * pred = [NSPredicate predicateWithFormat:@"currentCategoryOfImage = '%@'",[self.categoriesArray objectAtIndex:indexPath.row]];
    [self.myImagesObjArray filterUsingPredicate:pred];
    self.detailViewController.imagesItem = self.myImagesObjArray;

但我认为有一种更简单的方法可以做到这一点,但我仍然无法理解。

4

2 回答 2

1

您不能%@在谓词中用单引号括起来:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"currentCategoryOfImage = %@",[self.categoriesArray objectAtIndex:indexPath.row]];

而且您可能不想修改self.myImagesObjArray,而是将详细视图控制器列表设置为过滤后的数组:

self.detailViewController.imagesItem = [self.myImagesObjArray filteredArrayUsingPredicate:pred];
于 2013-05-17T19:34:33.787 回答
0

如果您不喜欢第一种谓词,则可以使用带有块的谓词,如下所示:

YourCustomObject = [self.categoriesArray objectAtIndex:indexPath.row];
NSArray *resultArray = [yourArray filteredArrayUsingPredicate: [NSPredicate predicateWithBlock:^BOOL(YourCustomObject *object, NSDictionary *bindings) {
   return [YourCustomObject.comparedProperty isEqualTo:object.comparedProperty];
}]];

我不知道你的模型类名称,所以我即兴创作。

于 2013-05-17T19:54:06.337 回答