2009-09-01 5 views
9

NSMutableArray를 사용하여 작업 중이며 objectAtIndex:int을 사용하여 배열에서 개체를 검색하는 데 문제가 없습니다. 오히려 정수로 배열에서 개체를 당기는 것은 문자열로 배열을 검색하여 인덱스 위치를 얻는 방법입니다.NSMutableArray - 문자열로 검색하여 배열 인덱스 정수 가져 오기

animalOptions = [[NSMutableArray alloc] init]; 
//Add items 
[animalOptions addObject:@"Fish"]; 
[animalOptions addObject:@"Bear"]; 
[animalOptions addObject:@"Bird"]; 
[animalOptions addObject:@"Cow"]; 
[animalOptions addObject:@"Sheep"]; 

NSString * buttonTitle = [animalOptions objectAtIndex:1]; 
// RETURNS BEAR 

int * objectIndex = [animalOptions object:@"Bear"]; 
// THIS IS WHAT I NEED HELP WITH, PULLING AN INDEX INTEGER WITH A STRING (ex: Bear) 

는 희망이 의미가 있습니다, 그리고 대답은 내가 온라인에서 조사한 구글이나 애플의 클래스 참조를 통해 아무것도 찾을 수 없었습니다, 거기에있다.

답변

34

당신은 NSArray에서 indexOfObject: 방법을 사용할 수 있습니다 :

NSUInteger index = [animalOptions indexOfObject:@"Bear"]; 

그 개체의 가장 낮은 인덱스가 반환됩니다 중복 된 항목이있는 경우. 자세한 내용은 docs을 참조하십시오.

+0

두 개의 서로 다른 NSStrings - 배열 및 전달되는 매개 변수에서 작동합니까? 아니면 "깊은"비교입니까? – fbrereto

+0

감사합니다! 놀라 울 정도로 빠른 응답, 내 질문을 해결했습니다. – bbullis21

+4

예 - 'isEqual :'메시지를 객체에 전송하여 동등성을 테스트합니다. 문자열 값이 서로 다른 경우 NSString 인스턴스는 두 개의 다른 인스턴스 인 경우에도 YES를 반환합니다. –

0

[array indexOfObject : object]를 사용하면 해당 객체의 색인을 반환 할 수 있습니다. 원하는 방식으로 지정 문자열이 실제 문자열 객체가 아니기 때문에 오류가 발생할 수 있습니다. 그러나이 일을 배열에 def 작업 것입니다

NSString * buttonTitle = [animalOptions objectAtIndex:1];// RETURNS BEARint 
objectIndex = [animalOptions indexOfObject:buttonTitle] //this will return 1