洗牌NSMutableArray

时间:2016-08-29 21:05:57

标签: ios objective-c nsmutablearray

我知道这已经得到了回答,但没有一个答案适合我。或者我不知道如何实施它们。 我有这样的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的方法的新代码,但仍然没有。

this is an error screenshot

这是我的.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

1 个答案:

答案 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];