Я пытаюсь получить результаты моей сущности «MeterReading», которая имеет два свойства: «метка времени» и «чтение». «timestamp» - это NSDate. Теперь я пытаюсь получить объект с точной датой.Использование NSPredicate для получения точного NSDate из 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];
Теперь self.timestamp передается другому ViewController заранее, то NSLog показывает:
1290264372,210091
NSPredicate журналы
метку времени == CAST (311957172.210091, "NSDate")
Первый вопрос: почему два числа не совпадают?
Второй и более важный вопрос: в ManagedContext у меня есть четыре записи с датами. Если я использую «< =» вместо «==», я получаю результаты с датой, меньшей той, которую я прошел, включая ту, которую я хочу иметь. Почему я не могу получить одну единственную дату с оператором «==»? Может ли это быть связано с точностью моих дат?
Спасибо!
что почти сработало, спасибо! передача массива привела к ошибке, но я передал два nsdates вручную в предикат, и теперь он работает. :) – denbec
К сожалению, об этом! Рад, что это помогло. –
Обратите внимание, что этот пример не будет работать с данными ядра. Вам нужно использовать что-то вроде этого: http://zdam.posterous.com/core-data-fetch-by-date – SpaceTrucker