iphone NSPredicate 中的 Random() 子句排序
Posted
技术标签:
【中文标题】iphone NSPredicate 中的 Random() 子句排序【英文标题】:Order by Random() clause in iphone NSPredicate 【发布时间】:2011-07-05 05:42:06 【问题描述】:嗨,
我正在开发一个 iphone 应用程序,我必须借助核心数据 NSPredicate
对象从 sqlite 表中提取数据。
我想随机获取记录,不进行任何排序。
喜欢:
SELECT * FROM zquestionsdata where zquestiontype='Logic' ORDER BY RANDOM()
NSPredicate
如何实现?
谢谢.......
【问题讨论】:
这篇文章可以帮助你。 ***.com/questions/2063050/… 【参考方案1】:你需要编写类似这样的代码
-(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;
调用这个方法,它会给出你想要的。
【讨论】:
以上是关于iphone NSPredicate 中的 Random() 子句排序的主要内容,如果未能解决你的问题,请参考以下文章
iphone:NSFetchedResultsController 的 NSPredicate 问题
fetchedResultsController 方法中的 NSPredicate 问题
iPhone如何使用NSPredicate按父实体过滤Core Data?
一对多关系 iPhone - NSPredicate 核心数据查询