ios - 确定数组中的最小值并在另一个数组中找到对应的字符串

标签 ios iphone objective-c arrays xcode

我正在制作的迷你高尔夫记分卡应用程序中有一个“优胜者屏幕”。我有两个存储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/

相关文章:

objective-c - 通过拖动 UISlider 滚动图像

ios - imageView 动画出错了

ios - swift 将多个项目与 NSLayoutConstraint 对齐

ios - Xcode 下载 : "The certificate for this server is invalid"

objective-c - 如何在 UITableViewCell 中添加复选标记

ios - UIButton 图像在模拟器上工作但不在设备上

ios - 点击以切换全屏 - 不透明标签栏的问题

iphone - 使用键盘以所需格式输入货币值

iphone - 更改 iPhone 上选项卡栏的颜色

iphone - 在 Interface Builder UIImageView 中从 Xcode "Folder Reference"访问图像