我一直试图让这个工作相当长一段时间,并且有些用完了。我试图使用“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
)
答案 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]]
。