2011-05-07 10 views
6

Mam NSArray z NSIndexPaths wewnątrz toJak uzyskać konkretne wartości z NSIndexPath

NSArray *array = [self.tableView indexPathsForSelectedRows]; 

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

NSLog zwraca to:

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

Próbuję dostać drugą wartość z indexPath do tylko zwykły NSInteger

+1

Czy to naprawdę Twój kod? Czy używasz niestandardowej podklasy widoku tabeli? Nie sądzę, istnieje metoda o nazwie 'indexPathsForSelectedRows'. Nie można również po prostu przypisać instancji 'NSIndexPath' do wskaźnika' NSArray'. –

+1

Apple ma nieudokumentowane metody wielokrotnego wyboru w UITableView (podobnie jak aplikacja do obsługi poczty), w której indeks IndexPathsForSelectedRows pochodzi od – Heli0s

+1

Od wersji iOS 5 kod ten jest w 100% bezpieczny dla aplikacji! (nieważ mnie to obchodzi, jestem piekłem po SDK) – lol

Odpowiedz

10

można użyć NSIndexPath „s -indexAtPosition: sposób dostać ostatnią index:

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

W twoim przypadku, można użyć następujących (jako Josh wspomniał w swoim komentarzu, jestem przy założeniu, że pracujesz z niestandardowego podklasa UITableView, ponieważ nie ma tej konkretnej metody (-indexPathsForSelectedRows:)):

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

Zostanie wydrukowane 0, 1, 2, ....

+0

Możesz także zrobić "path.row", aby uzyskać wartość w indeksie – Dean

Powiązane problemy