2011-06-23 15 views
35

Zasadniczo przechowuję indeks tablicy w NSIntegerze. Teraz potrzebuję tego jako NSIndexpath, walczę, aby zobaczyć i znaleźć sposób, aby przekonwertować mój NSInteger na NSIndexpath, dzięki czemu mogę go ponownie użyć.Konwertuj NSInteger na NSIndexpath

+0

Co zrobić, potrzebny jest 'NSIndexPath' dla? Czy potrzebujesz go do 'UITableView'? – albertamg

+0

Służy do wywoływania instrukcji aktualizacji dla sqlite. Myślę, że teraz przekonwertowałem na NSIndexPath, ale potrzebuję NSIndexPath.row i to powoduje błąd. Jakieś pomysły? – Dan

+0

Możesz ** nie ** wywoływać 'wiersz' na ścieżce indeksu utworzonej przez' indexPathWithIndex: '. Aby utworzyć ścieżkę indeksu, którą możesz wywołać 'wiersz', możesz użyć' indexPathForRow: inSection: '. – albertamg

Odpowiedz

86

Dla int index:

NSIndexPath *path = [NSIndexPath indexPathWithIndex:index]; 

Tworzy indeks elementu w węźle 0 pkt do jak za the reference.

Aby użyć indexPath w UITableView, tym bardziej odpowiednia metoda jest

NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:section]; 
+0

Dzięki. Czy nadal mogę zrobić path.row lub czy dostanę swoje eiderów? – Dan

3

Użyj poniższych metod klasy NSIndexPath.

+ (id)indexPathWithIndex:(NSUInteger)index; 
+ (id)indexPathWithIndexes:(NSUInteger *)indexes length:(NSUInteger)length; 
- (id)initWithIndex:(NSUInteger)index 

Zastosowanie jak poniżej, a także nie zapomnij releasemyIndexPath obiektu po użyciu.

NSIndexPath *myIndexPath = [[NSIndexPath alloc] initWithIndex:[myIntObj intValue]]; 
7

Jeśli potrzebujesz NSIndexPath dla UITableView, można użyć indexPathForRow:inSection: (reference). Ścieżki indeksów przekazane do widoku tabeli muszą zawierać dokładnie dwa indeksy określające sekcję i wiersz. Ścieżka indeksu utworzona za pomocą indexPathWithIndex: zawiera tylko jeden indeks i nie będzie działać z widokiem tabeli.

2

Swift 3:

let indexPath = IndexPath(row: 0, section: 0)