gpt4 book ai didi

ios - NSFetchedResultsController transient 属性上的 NSSortDescriptor

转载 作者:技术小花猫 更新时间:2023-10-29 11:15:39 26 4
gpt4 key购买 nike

好的,我最初想做 NSSortDescriptor请求 NSFetchedResultsController根据我的属性排序 NSManagedObject子类,但它显然不会这样做,因为 NSFetchedResultsController 仅限于对获取的实体及其关系起作用的谓词和排序描述符,所以我决定在我的数据模型中创建一个 transient 属性,将该属性的属性合成为ivar 在我的NSManagedObject子类化,并基于它进行排序。

运行它时,我在执行 fetch 时得到了 'NSInvalidArgumentException', reason: 'keypath isActive not found in entity <NSSQLEntity SMSourceEntity id=2>'

我知道这是 KVO 问题,所以我添加了 + (NSSet*)keyPathsForValuesAffectingIsActive , 但仍然有同样的问题。

我做错了什么,或者我仍然缺少一些东西来让它找到我的键路径?谢谢。

代码:

@implementation SMSourceEntity

@dynamic friendlyName;
@dynamic interfaceAddress;
@dynamic uniqueID;
@dynamic network;
@synthesize isActive = _isActive;

+ (NSSet*)keyPathsForValuesAffectingIsActive
{
return [NSSet setWithObject:@"isActive"];
}

@end

我的排序描述符:

request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"isActive" ascending:NO] , nil];

最佳答案

这不是 KVO 问题,而是您尝试执行的操作的问题,因为 FRC 要求排序可以应用于底层 SQLite 存储。换句话说,您只能对非 transient 属性进行过滤和排序。您需要使该属性成为非 transient 属性,以便将其值保存到存储中并可供 SQLite 使用。

对于FRC,只有section name key path属性可以是transient的。

关于ios - NSFetchedResultsController transient 属性上的 NSSortDescriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853496/

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