2011-07-12 8 views
0

私のモデルクラスは自分のデータを持つNSMutableDictionaryを持っています。私のビュークラスで、私は私のUITableView cellforRowAtIndexPathメソッドでそのデータを表示したいと思います。私のビュークラスには、データを表示するためのNSArrayがあります。NSMutableDictionary、keysSortedByValueUsingSelectorを使用してUITableViewを実装してください

私が正しく表示するために私にNSArrayに私のデータを取得するには、この操作を行うことができます。

self.CategoriesArray = [model.CategoryDictionary allKeys]; 

しかし、NSMutableDictionaryが独自に並べ替えていないので、私のテーブルビューの私の項目はアルファベット順ではありません。私はこれを行うことができると思った:

しかし、私は次のエラーを取得する:

2Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFBoolean localizedCaseInsensitiveCompare:]: unrecognized selector sent to instance 0x13d0a20' 

私は私のビュークラスはlocalizedCaseInsensitiveCompareメソッドで何をすべきかわからないので、それはだと仮定しています。

この問題を解決するにはどうすればよいですか?ありがとう。

答えて

1

私のような何かを行うことができ、あなたの配列をループしNSMutableArrayの

ため

sortedArrayUsingComparator:sortedArrayUsingDescriptors: NSArrayの

ため

sortUsingDescriptorssortUsingComparatorであなたcategoriesArrayの外観をソートするにはこれがあなたに与えることを言っていたと思う正確な結果、ちょうど順不同ですか?私が正しくあなたの質問を理解していた場合

self.CategoriesArray = [model.CategoryDictionary allKeys]; 

そのような場合、これはあなたに正しい順序を与える:私の配列で

NSArray* keys = [model.CategoryDictionary allKeys]; 

self.CategoriesArray = [keys sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
0

localizedCaseInsensitiveCompare:は、NSDictionaryまたはNSArrayを比較するのではなく、NSStringを比較するだけです。

あなたは

for (NSString *string in categoriesArray) 
{ 

} 
+0

要素がnsstringsはしかしあります。 localizedCaseInsensitiveCompareメソッドを使用できませんか? – Crystal

+0

配列をループする必要があります。配列上の文字列のメソッドを呼び出すことはできません。私は詳細で私の答えを編集します。 –

関連する問題