在Objective-C中对数组进行洗牌操作。

13 浏览
0 Comments

在Objective-C中对数组进行洗牌操作。

我开发iPhone/iPad应用程序。我想要对存储在NSArray中的对象进行洗牌。有没有用Objective-C实现的方法?

0
0 Comments

问题的原因:用户需要在Objective-C中对数组进行洗牌操作。

解决方法:用户可以参考提供的样例和之前的Stack Overflow问题来实现在Objective-C中对数组进行洗牌的操作。具体的实现方法可以在提供的链接中找到。

以下是对洗牌操作的Objective-C代码示例:

// 通过类别扩展给NSArray添加洗牌方法

@interface NSArray (Shuffling)

- (NSArray *)shuffledArray;

@end

@implementation NSArray (Shuffling)

- (NSArray *)shuffledArray {

NSMutableArray *tempArray = [NSMutableArray arrayWithArray:self];

NSUInteger count = [tempArray count];

for (NSUInteger i = 0; i < count; ++i) {

NSInteger remainingCount = count - i;

NSInteger exchangeIndex = i + arc4random_uniform((u_int32_t)remainingCount);

[tempArray exchangeObjectAtIndex:i withObjectAtIndex:exchangeIndex];

}

return [NSArray arrayWithArray:tempArray];

}

@end

// 使用洗牌方法对数组进行洗牌

NSArray *originalArray = @[@"1", @"2", @"3", @"4", @"5"];

NSArray *shuffledArray = [originalArray shuffledArray];

通过以上方法,用户可以在Objective-C中对数组进行洗牌操作。

0
0 Comments

在Objective-C中,有一个问题是如何对数组进行洗牌(Shuffle)。上述代码提供了一个方法来将NSMutableArray中的元素随机打乱顺序。这个问题的原因是数组元素的重复,解决方法是通过添加一个类别(Category)来给NSMutableArray添加一个shuffle方法。

代码中的NSMutableArray_Shuffling.h文件定义了一个类别,它扩展了NSMutableArray,提供了shuffle方法。代码中的NSMutableArray_Shuffling.m文件实现了shuffle方法。该方法首先会对随机数生成器进行种子初始化,然后通过循环遍历数组,每次选择一个在当前位置和数组末尾之间的随机位置,将当前位置的元素与随机位置的元素进行交换,从而实现洗牌操作。

需要注意的是,这段代码是从Kristopher Johnson的回答中复制而来的。原始回答的链接已经提供了更新的方法,因此建议使用原始回答中的方法,而不是这个旧的复制版本。

总结起来,Objective-C中洗牌数组的问题是如何对一个NSMutableArray进行元素的随机打乱。通过添加一个类别并实现shuffle方法,可以实现这一功能。以上是这个问题的原因和解决方法的整理。

0