Как использовать NSTableView selectedRowIndexes? - PullRequest
4 голосов
/ 16 мая 2010

Я только изучаю основы программирования в Objective C и Cocoa. Я пытаюсь получить некоторые данные из NSTableView. Основываясь на том, что я прочитал в одном уроке, я написал это:

NSArray * items = [[itemsTableView selectedRowEnumerator] allObjects];

Но потом я узнал, что selectedRowEnumerator устарел уже в 10.3 Panther и что я должен использовать selectedRowIndexes.

Проблема в том, что я не нашел, как на самом деле использовать возвращенное NSIndexSet для достижения того же результата, что и с кодом, написанным выше.

Итак, если бы кто-нибудь мог дать мне совет, я был бы очень благодарен. Спасибо.

Ответы [ 2 ]

2 голосов
/ 30 сентября 2016

Чтобы проиллюстрировать наиболее четко,

    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]);
    }
2 голосов
/ 16 мая 2010

Вы можете пройтись по индексам 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...