我知道这已经得到了回答,但没有一个答案适合我。或者我不知道如何实施它们。
我有这样的struct Database
。
NSMutableArray
当我试图像那样洗牌时
-(NSMutableArray*)tasks {
tasks = [[NSMutableArray alloc]initWithObjects:@0 ,@1 ,@2 , @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13 ,@14 ,@15 ,@16 ,@17 ,@18 ,@19 ,@20 ,@21 ,@22 ,nil];
return tasks;
}
没有任何反应。我该怎么办?或者我应该怎么称呼它?
编辑我有一个来自gamekit的方法的新代码,但仍然没有。
这是我的.h
-(void)shuffle {
for (int i = 0; i < 23; ++i) {
int r = (random() % 23);
[tasks exchangeObjectAtIndex:i withObjectAtIndex:r];
}
}
这是我的.m
#import <UIKit/UIKit.h>
#import "Accounts/Accounts.h"
@import GameKit;
@interface ViewController : UIViewController {
IBOutlet UIImageView *image;
IBOutlet UILabel *label;
IBOutlet UITextView *description;
NSArray *tasks;
NSArray *shuffledTasks;
}
- (IBAction)random:(id)sender;
@end
答案 0 :(得分:2)
为什么要手动洗牌? GameKit框架中有一个方法(如果您的目标是iOS 9及更高版本,则可用)自动为数组中的对象进行随机播放:
@import GameKit;
// ...
NSArray *tasks = @[@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21, @22];
NSArray *shuffledTasks = [[GKRandomSource sharedRandom] arrayByShufflingObjectsInArray:tasks];