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];
}]; 

我现在的问题是我通过 allKeysForObject: 获取值的键,它返回一个 NSArray。

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

“>> 我必须使用值对 NSDictionary 进行排序,并据此排列该值的键”

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

实施您的比较方法,

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

allkey 是使用值排序的键数组。

于 2012-04-09T08:39:22.533 回答
0

您可以使用NSMutableArray来存储您的数据,addObject: selector 或者使用NSMutableDictionary将两者都存储为键:值使用addObjectsAndKeys: selector

于 2012-04-09T08:16:07.910 回答