gpt4 book ai didi

ios - NSSortDescriptor用于核心数据一对多关系

转载 作者:行者123 更新时间:2023-12-01 16:29:56 28 4
gpt4 key购买 nike

我只想知道如何将NSSortDescriptor设置为NSFetchRequest

我们不能通过CoreData中的比较器执行排序吗?

还有其他解决方法吗?
有什么建议改变我的模式以促进这一点吗?

顺便说一句,我事先不知道要添加哪种类型的recordValue,在所有可能的组合中我将拥有可变数量的recordvalue。

enter image description here

我有如下所示的核心数据模型,数据存储如下

(当我想按dateValue排序时,只应考虑DOB的dataValue进行排序)

id    stringValue<NSString>  dateValue<NSDate>     record


name Alex - record1<ZCMORecord>

DOB - 10/10/1990 record1<ZCMORecord>

name Anto - record2<ZCMORecord>

DOB - 05/05/1990 record2<ZCMORecord>

name Max - record3<ZCMORecord>

DOB - 10/10/1990 record3<ZCMORecord>

name Mary - record4<ZCMORecord>

DOB - 01/01/1990 record4<ZCMORecord>

最佳答案

这是您对NSFetchedResultsController进行排序的方式:

- (NSFetchedResultsController *)fetchedResultsController {

if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"ZCMORecordValue" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

NSSortDescriptor *sortStringValue = [[NSSortDescriptor alloc]
initWithKey:@"stringValue" ascending:YES];
NSSortDescriptor *sortDate = [[NSSortDescriptor alloc]
initWithKey:@"dateValue" ascending:YES];
[fetchRequest setSortDescriptors:@[sortStringValue, sortDate]];

[fetchRequest setFetchBatchSize:20];

NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext sectionNameKeyPath:nil
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;

return _fetchedResultsController;

}

这将首先按名称排序,然后按日期排序。如果要按日期然后按名称排序,请反转排序描述符的顺序。

关于ios - NSSortDescriptor用于核心数据一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32355828/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com