什么是最好的方式來洗牌一個NSMutableArray?如果你有NSMutableArray如何隨機調整元素?(我有我自己的答案,這是在下面,但我是新的可可,我有興趣知道是否有更好的方法。)更新:截至iOS 10+和MacOS 10.12+,有一個-[NSMutableArray shuffledArray]方法,可用于洗牌??匆奾ttps:/developer.apple.com/Document/Foundation/nsArray/1640855-Shuffledarray?language=objc關于細節。(但請注意,這將創建一個新的數組,而不是對現有的元素進行洗牌。)
3 回答
瀟瀟雨雨
TA貢獻1833條經驗 獲得超4個贊
編輯:
編輯:(arc4random() % nElements)arc4random_uniform(nElements)
編輯:
編輯:
// NSMutableArray_Shuffling.h#if TARGET_OS_IPHONE#import <UIKit/UIKit.h>#else#include <Cocoa/Cocoa.h>#endif
// This category enhances NSMutableArray by providing
// methods to randomly shuffle the elements.@interface NSMutableArray (Shuffling)- (void)shuffle;@end
// NSMutableArray_Shuffling.m#import "NSMutableArray_Shuffling.h"@implementation NSMutableArray (Shuffling)- (void)shuffle{
NSUInteger count = [self count];
if (count <= 1) return;
for (NSUInteger i = 0; i < count - 1; ++i) {
NSInteger remainingCount = count - i;
NSInteger exchangeIndex = i + arc4random_uniform((u_int32_t )remainingCount);
[self exchangeObjectAtIndex:i withObjectAtIndex:exchangeIndex];
}}@end- 3 回答
- 0 關注
- 538 瀏覽
添加回答
舉報
0/150
提交
取消
