Nsarray를 뒤로 반복하는 쉬운 방법이 있습니까?
-
20-08-2019 - |
문제
나는있다 NSArray
그리고 특별한 경우를 뒤로 반복해야하므로 먼저 마지막 요소를 보도록해야합니다. 그것은 성능의 이유입니다 : 마지막이 의미가 없다면, 이전의 모든 것을 무시할 수 있습니다. 그래서 나는 루프를 깨고 싶다. 그러나 0에서 n까지 반복하면 작동하지 않습니다. 나는 n에서 0으로 가야 할 것입니다. 어쩌면 내가 모르는 방법이나 기능이있을 수 있으므로 휠을 다시 발명 할 필요가 없습니다.
해결책
다른 답변을 추가하려면 사용할 수 있습니다. -[NSArray reverseObjectEnumerator]
Objective-C 2.0의 빠른 열거 기능과 함께 (iPhone, iPhone에서 사용 가능) :
for (id someObject in [myArray reverseObjectEnumerator])
{
// print some info
NSLog([someObject description]);
}
더 많은 정보가 포함 된 출처 : http://cocoawithlove.com/2008/05/fast-enumeration-clarifications.html
다른 팁
이것은 Performace를위한 것이므로 여러 가지 옵션이 있으며 어떤 것이 가장 잘 작동하는지 확인하는 것이 좋습니다.
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:…]
-[NSArray reverseObjectEnumerator]
- 배열의 리버스 사본을 만듭니다 그런 다음 정상적으로 반복하십시오
- 루프에 표준 C를 사용하고 배열을 통해 시작하고 뒤로 작업하십시오.
더 극단적 인 방법 (성능이 매우 중요하다면)
- 코코아가 빠른 물체 열거를 구현하는 방법을 읽고 반대로 자신만의 동등한 것을 만듭니다.
- C 또는 C ++ 배열을 사용하십시오.
다른 사람들이있을 수 있습니다. 이 경우 누구나 추가 할 수 있습니다.
에서 여기:
NSEnumerator* myIterator = [myArray reverseObjectEnumerator];
id anObject;
while( anObject = [myIterator nextObject])
{
/* do something useful with anObject */
}
[NsArray reverseObjectEnumerator]
for (int i = ((int)[array count] - 1); i > -1; i--) {
NSLog(@"element: %@",array[i]);
}
제휴하지 않습니다 StackOverflow