Вопрос

Is there a fast way to get all elements at indexes from an array returned from a UITableView (NSArray of NSIndexPaths).

For instance:

[self.dataSourceArray selectItemsAt:[self.tableView indexPathsForSelectedItems]]
Это было полезно?

Решение

There is no built-in method, but you can simply loop over the selected rows (assuming that there is only one section) and add the corresponding elements to a mutable array:

NSMutableArray *selectedObjects = [NSMutableArray array];
for (NSIndexPath *indexPath in [self.tableView indexPathsForSelectedRows]) {
    [selectedObjects addObject:self.dataSourceArray[indexPath.row]];
}

Другие советы

word you are looking for is Lambda

there is two methots for that

you can look for it in link

Does Objective-C have List Lambda Query like C#?

it should look like this

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];

Use objectsAtIndexes: method of NSArray.

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];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top