帮助NSDictionary allKeysForObject:没有成功

时间:2011-01-17 20:06:45

标签: objective-c nsdictionary

我一直试图让这个工作相当长一段时间,并且有些用完了。我试图使用“allKeysForObject”来选择某个对象的所有键。

这是尝试选择结果键的测试代码。字典中的对象假设是数字,但是当我想显示它时,我使用%@来获得结果,这对我来说表明这不是数字。

我一直在尝试使用int,NSString选择键(如代码示例中所示)并使用allObject数组执行select但无法成功。因为我很陌生,所以我的选择用完了,不得不寻求帮助。

NSDictionary *playerResultInTheGame = [readCurrentGameDataFunction finalResultForCurrentGame];


NSLog(@"playerResultInTheGame: %@", playerResultInTheGame);

NSArray *allPlayers = [playerResultInTheGame allKeys];
NSArray *allObjects = [playerResultInTheGame allValues];

NSLog(@"allObjects: %@", allObjects);

NSMutableArray *myObjectsArray = [[NSMutableArray alloc] init];

allObjects = [allObjects sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"allObjects: %@", allObjects);


NSArray *xxxxx = [playerResultInTheGame allKeysForObject:@"1"];
NSLog(@"xxxxx: %@", xxxxx);

我得到的结果是:

  

2011-01-17 20:50:34.554 XX [11203:207] playerResultInTheGame:{
      Barnspelare = 2;
      Vuxenspelare = 1;
  }
  2011-01-17 20:50:34.554 XX [11203:207] allObjects:(
      2,
      1
  )   2011-01-17 20:50:34.555 XX [11203:207] allObjects:(
      1,
      2
  )
  当前语言:auto;目前的目标-c
  2011-01-17 20:51:50.086 XX [11203:207] xxxxx:(
  )
  2011-01-17 20:52:24.523 XX [11203:207] allPlayers:(
      Barnspelare,
      Vuxenspelare
  )

2 个答案:

答案 0 :(得分:1)

好的,所以如果你有一个玩家列表,作为键,以及他们作为对象的分数,那么你可以这样做:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"player1", @"2", @"Player2", @"3", @"player3", nil];


    NSLog(@"%@", [dict objectForKey:@"player1"]);

    NSString *key;
    for (key in dict) {
        NSLog(@"Player: %@, Result: %@", key, [dict objectForKey:key]);
    }

    [pool drain];
    return 0;
}

答案 1 :(得分:0)

键可能是数字而不是字符串。使用int肯定是错误的,因为Cocoa集合无法存储int。你必须使用NSNumber。因此,请使用[playerResultInTheGame allKeysForObject:[NSNumber numberWithInt:1]]