[英]Objective-C: Creating NSMutableDictionary or NSMutableArray
对于我的iPhone应用程序,我想在NSMutableDictionary
或NSMutableAarray
管理值。
我想以这种格式存储评分
round player1 player2
1 6 8
2 7 9
-- -- --
在我的情况下,回合数假设为固定值10,而总玩家数为2,这也是固定值。
但是用户可以按任意随机顺序提交分数,但只需单击一次即可。 手段
score for round "10" for both the player enter
score for round "2" for both the player enter
如何管理字典或数组,这可以帮助我轻松地再次检索它们?
为什么只使用面向对象的语言中的数组或字典?
@interface RoundResults : NSObject
@property (nonatomic, assign) NSInteger playerOneScore;
@property (nonatomic, assign) NSInteger playerTwoScore;
@end
@interface GameTotal : NSObject
- (void)setResults: (RoundResults *)results forRound: (NSInteger)round;
- (RoundResults *)resultsForRound: (NSInteger)round;
- (NSUInteger)countOfResults;
@end
//You can use combination of mutable array and dictionary to handle each round and player score
NSMutableArray *mutArrayRound=[[NSMutableArray alloc] initWithCapacity:10];
//--EDIT-------------------------------------------------------------------
//You need to do it somewhere so that it'll not give error for [mutArrayRound insertObject: atIndex:]
mutDic=[[NSMutableDictionary alloc] init];
for(int i=0;i<10;i++)
{
[mutArrayRound addObject:mutDic];
}
[mutDic release];
//-------------------------------------------------------------------------
NSMutableDictionary *mutDic=[[NSMutableDictionary alloc] initWithCapacity:2];
[mutDic setValue:@"Score_Valaue" forKey:@"player1-Score"];
[mutDic setValue:@"Score_Valaue" forKey:@"player2-Score"];
//For Round1
[mutArrayRound insertObject:mutDic atIndex:0];
//For Round2
[mutArrayRound insertObject:mutDic atIndex:1];
/*
You can access for particular round using mutDic=[mutArrayRound objectAtIndex:0];
And to access player score, you can use key score=[mutDic valueForKey:@"Player1_Score"];
*/
[mutArrayRound release];
[mutDic release];
您可以使NSDictionary的NSMutableArray:
NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:10];
// Now say Player one got 50 and Player2 got 65 in first round then add them in dictionary
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"50",@"P1",@"65",@"P2", nil];
[arr addObject:dict];
[dict release];
// As soon as you got the sores make a NSDictionary object and init it with objects like above and add that to the mutable array . It will add it to next index.
希望这会有所帮助。
理念1:
NSMutableDictionary* playerArounds = [NSMutableDictionary dictionary];
NSMutableDictionary* playerBrounds = [NSMutableDictionary dictionary];
[playerArounds setObject:@"5" forKey:@"1"];
// Player A scored 5 for round 1
// etc...
理念2 :(如果> 2个玩家,则适合
NSMutableArray* playerRounds = [NSMutableArray arrayWithObjects:nil];
for (int i=0; i<10; i++)
[playerRounds addObject:[NSMutableDictionary dictionary]];
[[playerRounds objectAtIndex:0] setObject:@"5" forKey:@"1"];
// Player 0 scored 5 for round 1
// etc...
想法3 :(更纯C的方法)
// a 2-dimensional array
int scores[2][10];
scores[0][2] = 5;
// Player 0's score for round 3 (2+1) is 5
如所指出的:
代替例如[playerArounds setObject:@"5" forKey:@"1"];
,因为您的值将是int(而不是字符串),所以最好使用(这将更有意义):
例如: [playerArounds setObject:[NSNumber numberWithInt:5] forKey:[NSNumber numberWithInt:1]];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.