Sto cercando di recuperare i risultati della mia entità "MeterReading", che ha due proprietà, "timestamp" e "reading". "timestamp" è un NSDate. Sto cercando di recuperare un oggetto con una data esatta.Utilizzo di NSPredicate per scaricare NSDate esatto da NSManagedObjectContect
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MeterReading" inManagedObjectContext:context];
[request setEntity:entity];
NSLog(@"%f", [self.timestamp timeIntervalSince1970]);
NSPredicate *pre = [NSPredicate predicateWithFormat:@"timestamp == %@", self.timestamp];
NSLog(@"%@", pre);
[request setPredicate:pre];
Ora, self.timestamp è passato ad un altro ViewController anticipo, il NSLog mostra:
1290264372,210091
Il NSPredicate registra
timestamp == CAST (311957172.210091, "NSDate")
Prima domanda: perché i due numeri non sono uguali?
Seconda e più importante domanda: Nel ManagedContext, ho quattro voci con le date. Se uso "< =" invece di "==", ottengo risultati con una data inferiore a quella che ho passato, incluso quello che voglio avere. Perché non riesco a ottenere un'unica data con l'operatore "=="? Questo può essere correlato alla precisione delle mie date?
Grazie!
che ha quasi funzionato, grazie! passare l'array ha generato un errore, ma ho passato due nsdate manualmente al predicato e ora funziona. :) – denbec
Oops, mi dispiace per quello! Sono contento che l'abbia aiutato, comunque. –
Si noti che questo esempio non funzionerà con i dati principali. È necessario utilizzare qualcosa di simile: http://zdam.posterous.com/core-data-fetch-by-date – SpaceTrucker