2012-01-10 35 views
-1

我有一個數組,其中包含一些名稱(字符串)。按字母順序列出數組的內容

1.)我想按照字母順序在數組中列出這些名字。 2.)稍後我會爲這個數組添加更多的名字,所以它必須附加到這個數組中。

如何以編程方式執行此操作?

注意:我沒有任何代碼證明我的工作到目前爲止。我只是創建了一個數組。

編輯

如果我的數組聲明;

NSArray *array = [NSArray arrayWithObjects:@"A",@"C",@"B", @"M",nil]; 

我該如何排序呢?

+1

試着問一個問題之前,閱讀文檔。 – 2012-01-10 17:52:41

+1

你的「數組聲明」是無效的代碼。請發佈您的真實代碼,並顯示您嘗試解決您自己的問題。 – 2012-01-10 18:25:44

回答

2

你確實應該嘗試習慣看文件 - 一旦你得到了它的竅門,你可以理出頭緒很快

NSArray的文檔給你數組排序的具體方式:

NSArray *array  = [NSArray arrayWithObjects:@"A", @"C", @"B", @"M", nil]; 
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 

現在考慮你想要添加的對象後,你將最有可能使用的NSMutableArrayNSMutableArray的文檔顯示方法:

- (void)sortUsingSelector:(SEL)comparator 

因此你可以使用

NSMutableArray *myMutableArray = [NSMutableArray arrayWithObjects:@"c", @"a", @"b", nil]; 
[myMutableArray sortUsingSelector:@selector(caseInsensitiveCompare:)]; 

這將排序您到位陣列導致

2012-01-10 17:47:11.477 Untitled[11904:707] (
    a, 
    b, 
    c 
) 
+0

+1 4個同時答案中最全面的答案。 – PengOne 2012-01-10 17:50:07

2

這將你需要的東西:

NSArray * sortedArray = [yourArray sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)]; 

當然,有些人可能會問,爲什麼你不問這個問題之前,請搜索Apple docs的「之類的陣列」。雖然不是我。我很樂意接受這些觀點!

1

這要求您對Array進行排序(並且在添加新值之後您需要執行此操作)。這很簡單:

NSArray *sortedArray = [myArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 

這個例子會不區分大小寫 - 但你也可以區分大小寫。

+0

我編輯了我的問題,請看看。我如何修改你的代碼到我的問題的編輯部分 – sharon 2012-01-10 17:51:40

1

如果您希望能夠稍後追加,那麼您應該使用NSArrayNSDictionary的可變類型。如果數組僅包含沒有其他數據關聯的名稱,則最簡單的方法是使用NSMutableArray來存儲它們。

要按字母順序排列,可以使用NSArray方法sortedArrayUsingSelector:以及@selector(caseInsensitiveCompare:)。這儘可能有效地爲您完成所有工作。