2011-05-03 118 views
0

我有一個包含在一年的所有月份,像這樣一個數組:如何重新排列我的數組?

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

當用戶鍵入一個個的文本框說,像他們鍵入「五一」,我採取什麼的文本框,並將其存儲作爲一個字符串。 現在我想重新安排我的陣列可以在被第一個索引,所以我的數組現在看起來現在這個樣子:

[May, June, July, August, September, October, November, December]; 

我不在乎月1至3月。 我無法正確地重新排列我的數組?任何想法如何做到這一點?

+0

我會做的就是讓這個月的你在文本字段中得到了指數,並移除任何在這之前的對象,這樣你只有你輸入的那個 – 2011-05-03 08:51:51

+0

你是我看到的。用戶輸入的內容是以字符串的形式存儲的,但是使用這個調用[months數組indexOfObject:(id)obj]會請求一個對象。我如何處理? – serge2487 2011-05-03 09:09:52

回答

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

好吧,我看到你在做什麼。我不知道用戶打字是什麼,所以它不會總是「五月」。我如何改變它,以便找到用戶在文本框中輸入的正確月份? – serge2487 2011-05-03 08:59:06

+0

編輯答案使其更加清晰。只需設置用戶輸入的字符串「monthString」即可。例如。在iOS上通過'monthString = [textfield stringValue];'在OS X或'monthString = textfield.text;'上執行。 – Regexident 2011-05-03 09:03:09

+0

我試過這個,但它不起作用。 NSString * textFieldString = userTextfield.text; NSUInteger * monthIndex = [monthsArray indexOfObject:textFieldString];它提供了非常高的指數值,這是沒有意義的。 – serge2487 2011-05-03 09:18:39