2013-04-12 11 views
11

voglio mostrare una data formattata nell'intestazione sezione di una visualizzazione della tabella ..percorso chiave <transientproperty> non trovato in un'entità

ho usato il seguente code.but sua un'eccezione *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath dateSectionIdentifier not found in entity <NSSQLEntity Expense id=1>'.

Immagino che si verifichi un'eccezione quando si aggiunge un descrittore di ordinamento.

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; 

} 
+1

Mostraci la dichiarazione e l'inizializzazione di 'dateSectionIdentifier' – CodaFi

risposta

28

Il titolo della tua domanda indica che "dateSectionIdentifier" è un transitorio proprietà .

Non è possibile utilizzare una proprietà temporanea in un descrittore di ordinamento (o in un predicato) di una richiesta di recupero dei dati di base se SQLite è utilizzato come tipo di archivio. Questa è una restrizione documentata, solo le proprietà persistenti possono essere utilizzate.

Vedere Persistent Store Types and Behaviors nella "Guida alla programmazione dei dati fondamentali" per ulteriori informazioni.

+0

il collegamento è interrotto; ( – Oriol

+0

@Oriol: Grazie per l'avviso, ho aggiornato il collegamento. –

0

Penso che avresti aggiunto "dateSectionIdentifier" nella sottoclasse, ma non aggiornato nel file .xcdatamodelId. Verifica incrociata per vedere se è stato aggiunto "dateSectionIdentifier" nel file .xcdatamodelId o no.