2

私はObjective-CとiPhoneを初めて使用します

値を使用してNSDictionaryを並べ替える必要があり、それに応じて、その値のキーを配置する必要があります。配列を並べ替えました。

//getting values
NSArray* keys1 = [sortDictionary allValues];    
NSArray* sortedArray = [keys1 sortedArrayUsingComparator:^(id a, id b) {  
     return [a compare:b options:NSNumericSearch];
}]; 

私の問題は、NSArrayを返すallKeysForObject:によって値のキーを取得していることです。

for( NSString* aStr in sortedArray ) {
    NSLog( @"%@ has value %@", [sortDictionary allKeysForObject:aStr], aStr );  
 }    
O/P :- (
  Sourish
) has value 60

むしろ、「Sourish」を文字列として保存してNSArrayに保存し、そのNSArrayをNSDictionaryに保存するか、Sourishと60の両方を別のNSDictionaryに保存します。

この問題を整理させてください。

4

3 に答える 3

2

これにより、配列を確認して文字列を取得できます。それはあなたが求めているものですか?

NSDictionary* sortDictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"60", @"Sourish", @"45" , @"Peckish",  @"25", @"Swordfish", @"15", @"Mashmish", nil];

 NSArray* keys1 = [sortDictionary allValues];    
 NSArray* sortedArray = [keys1 sortedArrayUsingComparator:^(id a, id b)
 {  
    return [a compare:b options:NSNumericSearch];
 }]; 

 for( NSString* aStr in sortedArray )
 {
    NSString* keyForObject = @"";

    if ([[sortDictionary allKeysForObject: aStr] count] > 0)
    {
        keyForObject = [[sortDictionary allKeysForObject: aStr] objectAtIndex: 0];
    }

     NSLog( @"%@ has value %@", keyForObject, aStr );  
 }  

このログ:

Mashmish has value 15
Swordfish has value 25
Peckish has value 45
Sourish has value 60
于 2012-04-09T09:40:32.023 に答える
0

を使用NSMutableArrayしてデータを保存するために使用するaddObject: selectorNSMutableDictionary、両方をkey:valuepareusingとして保存するために使用できます。addObjectsAndKeys: selector

于 2012-04-09T08:16:07.910 に答える
0

">>値を使用してNSDictionaryを並べ替える必要があり、それに応じてその値のキーを配置する必要があります"

NSArray *allkey =[[NSArray alloc] initWithArray:[sortDictionary keysSortedByValueUsingSelector:@selector(compare:)]] ;

比較メソッドを実装し、

 - (NSComparisonResult)compare:(id)b {
    return [self compare:b options:NSNumericSearch];
}

The allkey is the keys array sorted using values.

于 2012-04-09T08:39:22.533 に答える