Сложность с получением случайных слов из NSArray - PullRequest
0 голосов
/ 19 октября 2011

Когда я создаю и запускаю свое приложение, оно ничего не генерирует. То, что я генерирую, это слова, и после того, как оно стирает это слово и продолжается до тех пор, пока оно не исчерпает все слова, а затем снова не заполнит список. Вот код:

@implementation randomnumbersViewController
@synthesize words;
@synthesize randomArray;
@synthesize array;

-(IBAction)generateNumber:(id)sender {

    NSInteger randomize(id num1, id num2, void *context);
    int rand = arc4random() %2;
    if (rand)
        return NSOrderedAscending;
    else
        return NSOrderedDescending;
}

- (void)resetRandomArray;
{
    [randomArray setArray: array];
    [randomArray sortUsingFunction:random context:NULL];
}

- (NSString*) getRandomWord; {
    if ([randomArray count] ==0)
        return nil;
    NSString* result;
    NSInteger randomIndex = [[randomArray lastObject] intValue];
    [randomArray removeLastObject];
    result = [words objectAtIndex:randomIndex];
    return result;
}

- (void)buildRandomWordArray
{
    NSInteger index;

    NSError *theError;
    NSString *path = [[NSBundle mainBundle] pathForResource:@"words" ofType:@"text"];
    NSString *text = [NSString stringWithContentsOfFile: path
                                               encoding: NSUTF8StringEncoding
                                                  error: &theError];
    self.words = [text componentsSeparatedByString: @"\n"];

    int arraySize = [words count];
    self.array = [NSMutableArray arrayWithCapacity:arraySize];

    //This code fills "array' with index values from 0 to the number of elements in the     "words" array.
    for (index = 0; index<arraySize; index++)
        [array addObject: [NSNumber numberWithInt: index]];
    [self resetRandomArray];

    //for (index = 0; index<=arraySize; index++)
    // NSLog(@ "Random word: %@", [self getRandomWord]);
}

Кроме того, документ .txt должен быть включен в папку ресурсов в, чтобы это работало, и у меня это есть, но ничего. У кого-нибудь есть предложения относительно того, как я могу заставить его генерировать слова, или почему он не работает должным образом?

1 Ответ

1 голос
/ 19 октября 2011

Я не понимаю, как сортировка массива по возрастанию или по убыванию будет перетасовывать массив, возможно, потому что это не так. :) Вам следует использовать реализованное здесь перемешивание Фишера-Йейтса: Какой лучший способ перемешать NSMutableArray? Импортировать эту категорию и просто вызвать shuffle для изменяемого массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...