我只是在学习一些Objective C和Cocoa的基本编程。我正试着从NSTableView那里获取一些数据。根据我在一篇教程中读到的内容,我写了以下内容:
NSArray * items = [[itemsTableView selectedRowEnumerator] allObjects];但是后来我了解到在10.3Panther中selectedRowEnumerator已经被弃用了,我应该使用selectedRowIndexes。
问题是,我不知道如何实际使用返回的NSIndexSet来实现与上面编写的代码相同的结果。
所以,如果有人能给我一个建议,我将不胜感激。谢谢。
发布于 2010-05-16 20:00:22
您可以像这样遍历NSIndexSet的索引:
- (void) goThroughIndexSet:(NSIndexSet *) anIndexSet
{
NSUInteger idx = [anIndexSet firstIndex];
while (idx != NSNotFound)
{
// do work with "idx"
NSLog (@"The current index is %u", idx);
// get the next index in the set
idx = [anIndexSet indexGreaterThanIndex:idx];
}
// all done
}发布于 2016-09-30 20:22:38
为了更清楚地说明,
NSIndexSet *selectedRows = [MyTableView selectedRowIndexes];
NSUInteger numberOfSelectedRows = [selectedRows count];
NSUInteger indexBuffer[numberOfSelectedRows];
NSUInteger limit = [selectedRows getIndexes:indexBuffer maxCount:numberOfSelectedRows inIndexRange:NULL];
for (unsigned iterator = 0; iterator < limit; iterator++)
{
MyObject *object = [ myDataSource objectAtIndex:indexBuffer[iterator] ];
NSLog(@"Object at index: %lu", (unsigned long) indexBuffer[iterator] );
NSLog(@"Object selected: %@", [object description]);
}https://stackoverflow.com/questions/2843294
复制相似问题