Mam NSArray
i muszę iterować nad nim w specjalnym pudełku do tyłu, tak że najpierw patrzę na ostatni element. Z przyczyn związanych z wydajnością: jeśli ostatnia nie ma sensu, wszystkie poprzednie można zignorować. Więc chciałbym przerwać pętlę. Ale to nie zadziała, jeśli przejdę do przodu od 0 do n. Muszę przejść od n do 0. Może istnieje metoda lub funkcja, o której nie wiem, więc nie musiałbym wymyślać tutaj koła.Czy istnieje łatwy sposób na powtórzenie NSArray do tyłu?
Odpowiedz
Aby dodać na innych odpowiedzi, można użyć -[NSArray reverseObjectEnumerator]
w połączeniu z szybkim funkcji wyliczania w Objective-C 2.0 (dostępny w systemie Leopard, iPhone):
for (id someObject in [myArray reverseObjectEnumerator])
{
// print some info
NSLog([someObject description]);
}
Źródło z pewnym więcej informacji: http://cocoawithlove.com/2008/05/fast-enumeration-clarifications.html
Czy jest to uważane za szybkie wyliczanie i czy jest to szybsze od zwykłej pętli for zaczynającej się od '[myArray count] -1'? Jak iterować po 'NSString' wstecz? – ma11hew28
Nie mam tutaj żadnych odnośników, ale jest gdzieś wideo (mogło to być WWDC), gdzie inżynier Apple wyjaśnia, jak szybko działa wyliczanie i dlaczego jest szybki. Przewyższa zarówno wyliczenia NSArray oparte na indeksach, jak i klasyczne wyliczniki fundacji oraz, w zależności od scenariusza, wiele. –
Muszę uruchomić odwrotny pętli w słowniku, jak to zrobić? –
[NsArray reverseObjectEnumerator]
Od here:
NSEnumerator* myIterator = [myArray reverseObjectEnumerator];
id anObject;
while(anObject = [myIterator nextObject])
{
/* do something useful with anObject */
}
Ponieważ jest to dla performance, masz kilka opcji i będzie dobrze poinformowani, aby spróbować ich wszystkich, aby zobaczyć, które działa najlepiej.
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:…]
-[NSArray reverseObjectEnumerator]
- Create a reverse copy of the array i iterację tego zazwyczaj
- używać standardowego C do pętli i zaczynają działać i do tyłu tablicy.
bardziej ekstremalne metody (jeśli wydajność jest super-krytyczne)
- Poczytaj o tym, jak szybko Cocoa realizuje przedmiot wyliczanie i stworzyć swój własny odpowiednik w odwrotnej kolejności.
- Użyj tablicy C lub C++.
Mogą być inne. W takim przypadku każdy może go dodać.
Powiedziałbym, że enumerateObjectsWithOptions: NSEnumerationReverse jest najlepszą odpowiedzią, szczególnie jeśli musisz wiedzieć, na jakim jesteś indeksie. Dzięki!!! –
for (int i = ((int)[array count] - 1); i > -1; i--) {
NSLog(@"element: %@",array[i]);
}
- 1. Czy istnieje sposób na powtórzenie wszystkich wartości wyliczeniowych?
- 2. Czy istnieje łatwy sposób na wyczyszczenie merytorycznego repozytorium artefaktów?
- 3. Czy istnieje łatwy sposób na dołączenie źródła w środowisku Eclipse?
- 4. Czy istnieje łatwy sposób na graficzne tworzenie wykresów w neo4j?
- 5. Czy istnieje łatwy sposób na uzyskanie nazwy ServerName w Symfony?
- 6. Czy istnieje łatwy sposób na zmianę wersji PHP podczas programowania?
- 7. Łatwy sposób na połączenie plists?
- 8. Łatwy sposób na wyłączenie UITextField?
- 9. Czy istnieje łatwy sposób porównania bliskości dwóch kolorów?
- 10. Łatwy sposób na nieprzerwane odliczanie
- 11. Czy istnieje sposób na powtórzenie wszystkich argumentów przekazanych do funkcji w eliksiru?
- 12. Łatwy sposób na przeprowadzanie testów na klejnot?
- 13. czy istnieje sposób na iterację stałej używanej jako enum
- 14. Czy istnieje łatwy sposób na określenie, ile czasu zajmuje oczekiwanie na GIL Pythona?
- 15. Łatwy sposób na ucieczkę Zmienne szablonu Django
- 16. Łatwy sposób na awarię programu VB.NET
- 17. Łatwy sposób na zmianę motywu jQuery UI?
- 18. Libgdx: Czy istnieje łatwy sposób wyśrodkować tekst na każdej osi na przycisku?
- 19. Łatwy sposób na znalezienie Subtree w drzewie
- 20. Prawidłowy sposób na dwukrotne powtórzenie listy?
- 21. Łatwy sposób na skopiowanie starych wtyczek do nowej instalacji Eclipse
- 22. Czy można dopasować powtórzenie postaci do regex? W jaki sposób?
- 23. Łatwy sposób instalowania wtyczek Eclipse na Ubuntu
- 24. Łatwy sposób na NSCoder włączone klasy
- 25. Łatwy sposób na wypełnienie ResultSet z danymi
- 26. Czy istnieje łatwy sposób na połączenie dwóch uporządkowanych sekwencji przy użyciu LINQ?
- 27. Czy istnieje łatwy sposób sprawdzenia, do czego rozszerza się makro eliksir?
- 28. Erlang - przeplatają łatwy sposób
- 29. parsec: czy istnieje łatwy sposób na umieszczanie komentarzy/białych znaków w gramatyce?
- 30. Czy istnieje łatwy sposób na zdobywanie punktów czarną obwódką w gnuplot?
"Jak mogę odwrócić NSArray w Objective-C?" to zupełnie inne pytanie. – Nestor
Swift: http://stackoverflow.com/questions/24508592/how-to -iterate-for-loop-in-reverse-order-in-swift – Suragch