1

UITableView有没有一种快速的方法可以从( NSArrayof NSIndexPaths)返回的数组中获取索引处的所有元素。

例如:

[self.dataSourceArray selectItemsAt:[self.tableView indexPathsForSelectedItems]]
4

3 回答 3

3

没有内置方法,但您可以简单地遍历选定的行(假设只有一个部分)并将相应的元素添加到可变数组中:

NSMutableArray *selectedObjects = [NSMutableArray array];
for (NSIndexPath *indexPath in [self.tableView indexPathsForSelectedRows]) {
    [selectedObjects addObject:self.dataSourceArray[indexPath.row]];
}
于 2014-03-09T12:34:42.287 回答
-1

NSArray 的使用objectsAtIndexes:方法。

NSMutableIndexSet *mutableIndexSet = [[NSMutableIndexSet alloc] init];

// Add all indexes to NSMutableIndexSet
for (int i = 0; i < [self.tableView indexPathsForSelectedRows].count; i++) {
    [mutableIndexSet addIndex: ((NSIndexPath *) [self.tableView indexPathsForSelectedRows][i]).row];
}

[self.dataSourceArray objectsAtIndexes:mutableIndexSet];
于 2014-03-09T12:11:57.883 回答
-1

你要找的词是 Lambda

有两种方法

您可以在链接中查找

Objective-C 是否有类似 C# 的 List Lambda Query?

它应该看起来像这样

NSPredicate *p = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
       for(NSIndexPath i in [self.tableView indexPathsForSelectedItems]){
                if(i.row == evaluatedObject.row){
                   return YES;
                }
        }
       return NO;
}];
NSArray *result = [self.dataSourceArray filteredArrayUsingPredicate:p];
于 2014-03-09T12:13:32.733 回答