gpt4 book ai didi

iphone - 带有 sectionsNameKeyPath 和结果顺序的 NSFetchResultsController

转载 作者:行者123 更新时间:2023-11-28 22:27:21 25 4
gpt4 key购买 nike

我在使用 NSFetchResultsController 时遇到了一些麻烦,正在寻求一些帮助。

我的 CoreData 实体 FunCentre 具有以下属性 namelatitudelongitudecountry邮政编码收藏夹。当用户在 tableview 中选择一行时,它会将 favourite 属性设置为 1,当再次点击时,它会将其设置回 0。这一切都很好,因为我已经检查了 sqlite 文件并且更改是正确发生。

我想使用部分来分隔喜欢的行和不喜欢的行。我希望收藏夹列在第一部分的表格 View 顶部,列表的其余部分列在第二部分。

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"favourite"
cacheName:nil];

上面的代码在应用程序中工作并更改收藏夹,但是当我关闭应用程序并重新启动它时,收藏夹没有分组,只是按字母顺序出现在主列表中,它仍然将正确的行数放入最喜欢的部分。

SQL 调试结果

CoreData: sql: SELECT Z_VERSION, Z_UUID, Z_PLIST FROM Z_METADATA

CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZCOUNTRY, t0.ZFAVOURITE, t0.ZLATITUDE, t0.ZLONGITUDE, t0.ZNAME, t0.ZPOSTCODE FROM ZFUNCENTRE t0 ORDER BY t0.ZNAME

CoreData: annotation: sql connection fetch time: 0.0051s

CoreData: annotation: total fetch execution time: 0.0106s for 34 rows.

CoreData: sql: SELECT t0.ZFAVOURITE, COUNT (DISTINCT t0.Z_PK) FROM ZFUNCENTRE t0 GROUP BY t0.ZFAVOURITE ORDER BY t0.ZFAVOURITE

谁能告诉我为什么分组没有重新启动?以及如何更改分组顺序?因为收藏夹出现在底部,我希望它们位于顶部。

非常感谢

最佳答案

当使用 sectionNameKeyPath 时,您必须使用相同的键添加排序描述符(或至少生成相同的相对顺序):

NSSortDescriptor *sort1 = [[NSSortDescriptor alloc] initWithKey:@"favourite" ascending:YES];
NSSortDescriptor *sort2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sort1, sort2, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

关于iphone - 带有 sectionsNameKeyPath 和结果顺序的 NSFetchResultsController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18529033/

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