Порядок с помощью Random () в iphone NSPredicate - PullRequest
4 голосов
/ 05 июля 2011

Привет,

Я работаю над приложением для iphone, и мне нужно извлечь данные из таблицы sqlite с помощью базового объекта NSPredicate.

Я хочу получать записи на Случайной основе без какой-либо сортировки.

Как:

SELECT * FROM zquestionsdata where zquestiontype='Logic' ORDER BY RANDOM() 

Как это можно реализовать с помощью NSPredicate?

Спасибо .......

1 Ответ

4 голосов
/ 05 июля 2011

Вам нужно написать код для чего-то вроде этого

-(NSMutableArray *)getRandomArrayFromDB
{
    NSMutableArray *fetchResults;
        NSString *entityName=@"questionsdata";
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:globalManagedObjectContext];
        [fetchRequest setEntity:entity];

        fetchResults = [NSMutableArray arrayWithArray:[globalManagedObjectContext executeFetchRequest:fetchRequest error:nil]];
        [fetchRequest release];
    NSString *cat=@"Logic";
            [fetchResults filterUsingPredicate:[NSPredicate predicateWithFormat:@"questiontype == %@",cat]];

// sort it in random order

NSUInteger count = [fetchResults count];
    for (NSUInteger i = 0; i < count; ++i) {
        // Select a random element between i and end of array to swap with.
        int nElements = count - i;
        int n = (random() % nElements) + i;
        [fetchResults exchangeObjectAtIndex:i withObjectAtIndex:n];
    }

return fetchResults;
}

вызовите этот метод, и он даст то, что вы хотите.

...