2013-04-12 10 views
11

Ich mag ein formatierte Datum in dem Abschnitt Kopfzeile einer Tabellenansicht zeigen ..Schlüsselpfad <transientproperty> nicht in Einheit gefunden

habe ich die folgenden code.but seine eine Ausnahme *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath dateSectionIdentifier not found in entity <NSSQLEntity Expense id=1>' werfen.

Erraten Sie, dass die Ausnahme kommt, wenn Sie einen Sortierdeskriptor hinzufügen.

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

Zeigen Sie uns die Deklaration und Initialisierung von 'dateSectionIdentifier' – CodaFi

Antwort

28

Der Titel Ihrer Frage gibt an, dass "dateSectionIdentifier" ist ein vorübergehende Eigenschaft.

Sie können keine transiente Eigenschaft in einem Sortierungsdeskriptor (oder Prädikat) einer Core Data-Abrufanforderung verwenden, wenn SQLite als Speichertyp verwendet wird. Dies ist eine dokumentierte Einschränkung, nur persistente Eigenschaften können verwendet werden.

Weitere Informationen finden Sie unter Persistent Store Types and Behaviors im "Core Data Programming Guide" .

+0

der Link ist kaputt; ( – Oriol

+0

@Oriol: Danke für die Ankündigung, ich habe den Link aktualisiert. –

0

Ich denke, Sie hätten "dateSectionIdentifier" in der Unterklasse hinzugefügt, aber nicht in der .xcdatamodelId-Datei aktualisiert. Überprüfen Sie, ob Sie "dateSectionIdentifier" in der .xcdatamodelId-Datei hinzugefügt haben oder nicht.

Verwandte Themen