如何从NSIndexPath获取特定值

Hel*_*i0s 7 objective-c uitableview nsarray nsinteger nsindexpath

我有一个带有NSIndexPaths的NSArray

NSArray *array = [self.tableView indexPathsForSelectedRows];

for (int i = 0; i < [array count]; i++) {
    NSLog(@"%@",[array objectAtIndex:i]);
}
Run Code Online (Sandbox Code Playgroud)

NSLog返回:

<NSIndexPath 0x5772fc0> 2 indexes [0, 0]
<NSIndexPath 0x577cfa0> 2 indexes [0, 1]
<NSIndexPath 0x577dfa0> 2 indexes [0, 2]
Run Code Online (Sandbox Code Playgroud)

我试图从indexPath获取第二个值只是一个普通的NSInteger

Ita*_*ber 10

您可以使用NSIndexPath-indexAtPosition:方法来获得最后一个索引:

NSIndexPath *path = ...; // Initialize the path.
NSUInteger lastIndex = [path indexAtPosition:[path length] - 1]; // Gets you the '2' in [0, 2]
Run Code Online (Sandbox Code Playgroud)

在你的情况下,你可以使用以下(正如Josh在他的评论中提到的,我假设你正在使用自定义子类UITableView,因为它没有那个特定的方法(-indexPathsForSelectedRows:)):

NSArray *indexes = [self.tableView indexPathsForSelectedRows];
for (NSIndexPath *path in indexes) {
    NSUInteger index = [path indexAtPosition:[path length] - 1];
    NSLog(@"%lu", index);
}
Run Code Online (Sandbox Code Playgroud)

那将打印出来0, 1, 2, ....