Keypath ‹transientproperty› не найден в объекте

Я хочу отображать отформатированную дату в заголовке раздела табличного представления.

Я использовал следующий код, но он выдал исключение *** 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;

}

person Chandu    schedule 12.04.2013    source источник
comment
Покажите нам объявление и инициализацию dateSectionIdentifier   -  person CodaFi    schedule 12.04.2013


Ответы (2)


Заголовок вашего вопроса указывает на то, что dateSectionIdentifier является временным свойством.

Вы не можете использовать временное свойство в дескрипторе сортировки (или в предикате) запроса на выборку Core Data, если SQLite используется как тип хранилища. Это задокументированное ограничение, можно использовать только постоянные свойства.

См. постоянные типы хранилищ и поведение в разделе " Руководство по программированию основных данных "для получения дополнительной информации.

person Martin R    schedule 12.04.2013
comment
ссылка не работает; ( - person Oriol; 14.03.2016
comment
@Oriol: Спасибо за уведомление, я обновил ссылку. - person Martin R; 14.03.2016

Я думаю, вы бы добавили dateSectionIdentifier в подкласс, но не обновили в файле .xcdatamodelId. Перекрестная проверка, добавили ли вы «dateSectionIdentifier» в файл .xcdatamodelId или нет.

person bharathi kumar    schedule 04.09.2015