2013-06-09 2 views
0

JavaScript/ActionScript 배경에서 왔으며 문자열 및 배열에 indexOflastIndexOf을 사용하는 데 익숙합니다. NSString의 경우,이 두 가지가 비교적 간단했다 :Array.lastIndexOf (element, fromIndex)의 Objective-C 코드 란 무엇입니까

NSArray들에 대한
// equivalent of JavaScript's string.indexOf(substring, fromIndex) 
[string rangeOfString:substring 
       options:nil 
       range:NSMakeRange(fromIndex, string.length - fromIndex)].location; 

// equivalent of JavaScript's string.lastIndexOf(substring, fromIndex) 
[string rangeOfString:substring 
       options:NSBackwardsSearch 
       range:NSMakeRange(string.length - fromIndex, fromIndex)].location; 

, 내가 indexOf을 알아 내기 위해 나섰고 할 수있는 기본 기능을 찾을 수 없습니다 lastIndexOf :

// equivalent of JavaScript's array.indexOf(item, fromIndex) 
[array indexOfObject:item 
      inRange:NSMakeRange(fromIndex, array.count - fromIndex)]; 

어떤 것 범위 내의 배열에 lastIndexOf 요소를 찾으려면 코드가 필요합니까? 단일 선택기 호출 이상이 필요합니까?

+0

하나 이상의 방법/문장을 사용해도 행복합니까? –

+0

나는 하나 이상의 방법/문장으로 괜찮을 것이다. 그리고 두 번째 매개 변수 인'fromIndex'도 고려하기 때문에 중복이 아닙니다. – Himanshu

답변

2

-[NSArray indexOfObjectWithOptions:passingTest:]에 대한 단일 메서드 호출을 사용하여 수행 할 수 있지만 블록을 전달해야합니다.

[array indexOfObjectWithOptions:NSEnumerationReverse passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
    if (idx < fromIndex) *stop = YES; 
    return [obj isEqual:item]; 
}]; 
+0

정말 고마워! 이 선택기를 사용하여 인덱스를 확인하는 방법을 알아 냈습니다. 성공하지 못했습니다. 'stop '을 설정하면 트릭을 수행합니다! – Himanshu