amb*_*ght 9 objective-c key-value-observing transient nssortdescriptor ios
好吧,我最初想要根据我的子类中的属性进行排序NSSortDescriptor
请求,但显然不会这样做,因为NSFetchedResultsController仅限于对获取的实体及其关系起作用的谓词和排序描述符,所以我决定在我的数据模型中创建一个transient属性,在我的子类中将此属性的属性合成为ivar ,并基于它进行排序.NSFetchedResultsController
NSManagedObject
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
Run Code Online (Sandbox Code Playgroud)
我的sortDescriptor:
request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"isActive" ascending:NO] , nil];
Run Code Online (Sandbox Code Playgroud)
Wai*_*ain 16
这不是KVO
问题,因为FRC要求排序可以应用于底层SQLite存储,这是您尝试执行的操作的问题.换句话说,您只能对非瞬态属性进行过滤和排序.您需要将属性设置为非瞬态属性,以便将其值保存到存储中并可供SQLite使用.
对于FRC,只有段名称键路径属性可以是瞬态的.
归档时间: |
|
查看次数: |
3122 次 |
最近记录: |