2011-05-07 99 views
6

我有一个NSArray中有NSIndexPaths它如何获得特定值从NSIndexPath

NSArray *array = [self.tableView indexPathsForSelectedRows]; 

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

的的NSLog返回这里面:

<NSIndexPath 0x5772fc0> 2 indexes [0, 0] 
<NSIndexPath 0x577cfa0> 2 indexes [0, 1] 
<NSIndexPath 0x577dfa0> 2 indexes [0, 2] 

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

+1

这真的是你的代码吗?您是否使用自定义表格视图子类?我不认为有一个名为'indexPathsForSelectedRows'的方法。你也不能只将一个'NSIndexPath'实例分配给'NSArray'指针。 – 2011-05-07 02:48:53

+1

Apple在UITableView(如邮件应用程序)中进行多选的未公开方法,其中indexPathsForSelectedRows来自 – Heli0s 2011-05-07 03:12:56

+1

从iOS 5开始,此代码是100%安全的应用商店! (不是我关心的,我是地狱后的SDK) – lol 2012-01-17 08:41:35

回答

10

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

NSIndexPath *path = ...; // Initialize the path. 
NSUInteger lastIndex = [path indexAtPosition:[path length] - 1]; // Gets you the '2' in [0, 2] 

在你的情况,你可以使用下面的(如乔希在他的评论中提到的,我假设你正在使用的UITableView自定义子类的工作,因为它不具有特定的方法(-indexPathsForSelectedRows:) ):

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

这将打印出0, 1, 2, ...

+0

你也可以通过'path.row'来获取索引值 – Dean 2014-08-26 17:33:19