我正在制作的迷你高尔夫记分卡应用程序中有一个“优胜者屏幕”。我有两个存储1)的数组。播放器的名称和2)。他们的分数。
playerNameArray = [[NSMutableArray alloc]initWithObjects:playerOneName.text, playerTwoName.text, playerThreeName.text, playerFourName.text, playerFiveName.text, playerSixName.text, nil];
scoreArray = [[NSMutableArray alloc]initWithObjects:playerOneStat.text, playerTwoStat.text, playerThreeStat.text, playerFourStat.text, playerFiveStat.text, playerSixStat.text, nil];
我可以找到得分最低的玩家姓名:
int winner = [[scoreArray valueForKeyPath:@"@min.intValue"] intValue];
NSLog(@"the winner scored %d", winner);
NSString *string = [NSString stringWithFormat:@"%d", winner];
NSUInteger indexOfTheObject = [scoreArray indexOfObject:string];
NSString *playerString = [playerNameArray objectAtIndex:indexOfTheObject];
NSLog(@"The winner name is %@", playerString);
如果只有一个玩家,则此方法有效,但是如果有两个或多个得分相同的最低分数的玩家,则只能显示按阵列顺序排在第一位的玩家的姓名。如何修改代码以创建得分相同的获奖者名单/阵列?
最佳答案
因为您有两个“并行”数组,所以最简单的事情可能是创建一个循环,如下所示:
for (int i = 0 ; i != scoreArray.count ; i++) {
if (scoreArray[i].intValue == winner) {
NSLog(@"Winner %@ at index %d.", playerNameArray[i], i);
}
}
如果您采用更传统的方法并创建了代表玩家的对象,请说,
@interface Player : NSObject
@property (nonatomic, readonly) NSString *name;
@property (nonatomic, readonly) int score;
-(id)initWithName:(NSString*)name andScore:(int)score;
@end
那么您就可以使用谓词进行搜索,并一次性找到所有获胜者。
关于ios - 确定数组中的最小值并在另一个数组中找到对应的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21718314/