2011-05-03 3 views
0

나는 일년 내내 모든 달을 포함하는 배열을 가지고있다.배열을 재정렬하는 방법?

[January,February,March,April,May,June,July,August,September,October,November,December]; 

사용자가 텍스트 필드에 달을 입력 할 때 "5 월"을 입력하면 텍스트 필드에서 whats를 가져 와서 다음과 같이 저장한다. 문자열. 이제

저는 1 월에서 3 월까지는 상관하지 않습니다. 배열을 올바르게 재정렬하는 데 문제가 있습니까? 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

+0

내가 무엇을 할 것은 텍스트 필드에받은 달의 인덱스를 취득하고 제거하다 그 전에 객체, 당신은 오직 당신이 입력 한 객체를 가지고 있습니다. –

+0

ye see. 사용자가 입력 한 내용은 문자열로 저장되지만이 호출을 사용합니다. [months array indexOfObject : (id) obj]는 객체를 요청합니다. 어떻게 처리할까요? – serge2487

답변

1

이 수행해야합니다

NSString *monthString = @"May"; 
NSUInteger monthIndex = [monthsArray indexOfObject:monthString]; 
NSArray *trimmedMonthsArray = nil; 
if (monthIndex != NSNotFound) { 
    trimmedMonthsArray = [monthsArray subarrayWithRange:NSMakeRange(monthIndex, [monthArray count] - monthIndex)]; 
} 

을 당신이 재정렬에 대해 많이 않다시피하지만 부분 배열을 절단에 대해 (사실은 전혀 재정렬에 대해이 아니다).

대신 원래 가변 배열을 수정할 새로운 손질 배열을 얻는, 이렇게 할 경우 :

NSString *monthString = @"May"; 
NSUInteger monthIndex = [monthsArray indexOfObject:monthString]; 
if (monthIndex != NSNotFound) { 
    [monthsArray removeObjectsInRange:NSMakeRange(0, monthIndex)]; 
} 
+0

좋아, 내가하고있는 일을 봐. 나는 항상 "5 월"이 아닐 정도로 사용자가 타이핑 할 것 인 것을 알고있다. 사용자가 텍스트 필드에 입력 한 정확한 달을 찾을 수 있도록 어떻게 변경합니까? – serge2487

+0

수정 된 답을 더 분명하게 표시합니다. 그냥'monthString'을 사용자가 입력 한 문자열로 설정하십시오. 예 : OS X에서는'monthString = [textfield stringValue];'를 사용하거나 iOS에서는'monthString = textfield.text; '를 사용하십시오. – Regexident

+0

시도했지만 작동하지 않습니다. NSString * textFieldString = userTextfield.text; NSUInteger * monthIndex = [monthsArray indexOfObject : textFieldString]; 그것은 의미가없는 매우 높은 지수 값을 제공합니다. 이 – serge2487

관련 문제