2011-03-11 24 views
3

我很困惑这个方法的使用以及将它列为(void)方法的文档。NSIndexPath getIndexes方法....怎么样?

“返回索引路径索引”

它还返回什么呢?

岂不是:

- (NSIndexPath *)getIndexes:(NSUInteger *)indexes 

getIndexes: 提供的索引路径的索引的参考。

- (void)getIndexes:(NSUInteger *)indexes 

参数 索引 指针为无符号整数数组。返回时,索引路径的索引。 供货情况 适用于iOS 2.0及更高版本。 宣布 NSIndexPath.h

回答

4

您必须分配大小为[indexPath length]的NSUInteger数组并将其作为参数传递。返回值将写入那里。你必须自己释放阵列或者什么都不做它是在堆栈中创建这样的:

NSUInteger array[[indexPath length]]; 
[indexPath getIndexes: array]; 
+0

感谢大家的优秀答案!我现在明白了,谢谢。我选择了Max的解答,即使这三个都是有效的 – user7865437 2011-03-11 11:43:38

+0

在这里失去了阴谋?\t NSUInteger数组[[indexPath length]]; \t [indexPath getIndexes:array]; int len = sizeof(array)/ sizeof(NSUInteger); (@“%i”,len);无论我在给定的部分中有多少行,我所有的返回值都是2? – user7865437 2011-03-11 13:02:15

+0

索引路径不存储行数。它用于有效地访问单元格。你需要使用[tableView numberOfRowsInSection] – Max 2011-03-11 13:41:16

2

也许下一句解释的原因

这是开发商的责任分配内存为C数组。

它实际上是一个指针C数组将与索引来填补你的,所以没有理由另外从函数返回它 - 你已经知道它的地址。

可以使用的功能如下

NSUInteger indexCount = [indices count]; 
NSUInteger buffer[indexCount]; 
[indices getIndexes:buffer maxCount:indexCount inIndexRange:nil]; 
+0

Thomas,“开发人员有责任为C数组分配内存。”没有显示在我看到的帮助? – user7865437 2011-03-11 12:14:39

+0

我已经在这里看过这个类的引用http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSIndexPath_Class/Reference/Reference.html – 2011-03-11 12:20:57

+0

啊,解释它,开发人员指南省略那条线! – user7865437 2011-03-11 12:55:02

0

您发送消息NSIndexPath的一个实例,因此获得一回也于事无补。 -getIndexes:方法使用索引路径中的索引填充数组的'索引'。所以你可以这样做:

NSUInteger *indexes = calloc([indexPath length], sizeof(NSUInteger)); 
[indexPath getIndexes:indexes]; 

之后,索引将被填充indexPath中的索引值。

0

最大,托马斯和迦勒,我已经尝试了所有三种方式并不能得到任何工作,所以也许发了公认的解决方案太快.....但可能更可能我只是没有得到它?我无法获得正确的数组大小,以便循环访问我的表中所需的行。我会虽然calloc([indexPath长度],sizeof(NSUInteger))将为一个5行的组将返回一个数组与5行,每行保存NSUintegr .....或者我到目前为止离束它令人尴尬?

+0

索引路径只指定一个部分和一行,而不是表中的所有行。您的表的数据源和委托一起工作以提供表的行,所以您应该已经知道有多少行并有权访问其所有数据。 – Caleb 2011-03-11 13:50:47