我想在表格视图的节标题中显示格式化的日期..
我使用了以下代码。但它抛出异常*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath dateSectionIdentifier not found in entity <NSSQLEntity Expense id=1>'
。
猜测添加排序描述符时会出现异常。
NSMutableArray *sortDescriptors = [[NSMutableArray alloc] initWithCapacity:20];
NSSortDescriptor *mainSortDescriptor = [[NSSortDescriptor alloc] initWithKey:dateSectionIdentifier ascending:NO];
[sortDescriptors addObject:mainSortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
// Expense.h
NSString *dateSectionIdentifier;
// Expense.m
@dynamic dateSectionIdentifier
-(NSString *)dateSectionIdentifier{
[self willAccessValueForKey:@"dateSectionIdentifier"];
NSString *tempDate = [self primitiveDateSectionIdentifier];
[self didAccessValueForKey:@"dateSectionIdentifier"];
if(!tempDate){
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"d MMMM yyyy"];
tempDate = [dateFormatter stringFromDate:[self date]];
[self setPrimitiveDateSectionIdentifier:tempDate];
[dateFormatter release];
}
return tempDate;
}
答案 0 :(得分:29)
您的问题标题表明“dateSectionIdentifier”是瞬态属性。
如果将SQLite用作存储类型,则不能在Core Data获取请求的排序描述符(或谓词)中使用transient属性。这是一个记录在案的限制,只能使用持久属性。
请参阅“核心数据编程指南”中的Persistent Store Types and Behaviors 了解更多信息。
答案 1 :(得分:0)
我认为你会在子类中添加“dateSectionIdentifier”,但不会在.xcdatamodelId文件中更新。 交叉检查是否在.xcdatamodelId文件中添加了“dateSectionIdentifier”。