У меня есть некоторые данные XML, извлеченные из веб-службы, которые я использую для создания NSManagedObject
s и сохранения в хранилище sqlite3.В моем приложении я использую NSPredicate
объекты для запроса этих данных по дате (наряду с другими полями).У меня есть данные за каждый день с апреля 2009 г. по август 2010 г. (в соответствии с необработанным XML-кодом, полученным из веб-службы SOAP).
Вот небольшая настройка:
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *today = [cal dateFromComponents:[cal components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit
fromDate:[NSDate date]]];
NSDate *day1ahead = [cal dateFromComponents:[cal components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit
fromDate:[NSDate dateWithTimeIntervalSinceNow:kSecondsPerDay]]];
NSDate *day2ahead = [cal dateFromComponents:[cal components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit
fromDate:[NSDate dateWithTimeIntervalSinceNOw:kSecondsPerDay*2]]];
Я могу успешно получить NSManagedObject
s, используя запрос NSPredicate
, подобный следующему:
NSPredicate *todaysData = [NSPredicate predicateWithFormat:@"(StartDate >= %@) AND (StartDate <= %@)", today, day1ahead];
Однако, когда я делаю запрос, подобный следующему, я получаю bupkis.
NSPredicate *tomorrowsData = [NSPredicate predicateWithFormat:@"(StartDate >= %@) AND (StartDate <= %@)", day1ahead, day2ahead];
Я проверил данные XML, и есть будущие даты, для которых я пытаюсь сделать запрос, и я также проверил хранилище данных sqlite3 напрямую следующим образом:
sqlite> select datetime(startdate, "unixepoch", "31 years") from mydatatable;
Результаты этого простого запросапокажите, что будущие даты, которые мне нужны, уже есть.
Я даже попробовал запрос, подобный этому:
NSPredicate *allFuture = [NSPredicate predicateWithFormat:@"(StartDate >= %@)", today];
Результаты не включали ничего, кроме текущего дня.Похоже, что он находится в резервном хранилище, поэтому я немного растерялся из-за того, что объекты NSPredicate не работают так, как я ожидаю.
Есть ли способ увидеть фактические операторы SQL, сгенерированные CoreData, чтобы я действительно мог видеть, что происходит?Я смотрю на данные неправильно в БД sqlite3?Что-то еще очевидно, что я скучаю?