微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UITableview中的数据排序问题

如何解决UITableview中的数据排序问题

| 我已经实现了一个通过核心数据获取数据的UItable。该表工作正常,可以正确显示数据,向下钻取..等 但是,它具有以下问题:每次以不同的顺序显示内容数据。我希望它至少能始终如一地出现,甚至更好地按字母顺序显示。 关于为什么可能会发生这种情况的任何想法,或者我应该在文档中审查的特定属性方法? 帮助非常感谢     

解决方法

您需要在NSFetchRequest上设置NSSortDescriptor
NSSortDescriptor *sortDescriptorName = [[NSSortDescriptor alloc] initWithKey:@\"name\" ascending:YES selector:@selector(caseInsensitiveCompare:)];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptorName]];
然后使用“ 1”对象创建NSFetchedResultsController。 这将导致您的列表使用属性“名称”按字母顺序显示,并且在排序时忽略大小写。     ,您可以简单地向请求添加排序描述符。在此示例中,数据对象具有一个用于\“ sortOrder \”的数字列,但是您可以对大多数内容进行排序。
- (NSMutableArray *)loadData {
NSManagedObjectContext *context = [self managedObjectContext];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@\"NameOfEntity\" inManagedObjectContext:context];
[request setEntity:entity];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@\"sortOrder\" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor,nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];

NSError *error = nil;

NSMutableArray *mutableFetchResults = [[context executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil) {
    // Handle the error.
}

[request release];

return [mutableFetchResults autorelease];
}
    ,除了阅读和审查一些示例外,我对CoreData并没有做太多事情,但是我会这样说: 听起来您的数据只是从CoreData中未排序而来的,并且实际上并不能保证顺序,除非您通过排序描述符之类的方式提供一些其他有关如何排序的提示。 抱歉,我无法提供具体的参考,但是必须有一种既可以获取数据又可以指定返回顺序的方法。 或者,您可以(在后台)从CoreData中获取所有表数据,然后自己对其进行排序,但是我认为这违背了首先使用CoreData的目的,并放弃了CoreData的许多功能,这些功能可能更有效比您可以编写自己来处理数据的任何东西都要多。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。