переменные fetchRequestFromTemplateWithName - PullRequest
1 голос
/ 25 февраля 2012

Я использую Xcode 4.2.1 и пытаюсь использовать переменную. Я понимаю, в xcode 4 вам нужно установить переменную с $variable. У меня в Xcode для моего запроса извлечения переменная как $currDate

fetch request

и мой код как

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"YYYYMMdd"];
    NSDate *currDate = [NSDate date];
    NSString *currDateString = [dateFormatter stringFromDate:currDate];
    NSError *error;
    NSFetchRequest *fetchRequest = [[[DataManager sharedInstance] objectModel] fetchRequestFromTemplateWithName:@"fetchAppointmentsByDate" substitutionVariables:[NSDictionary dictionaryWithObject:currDateString forKey:@"currDate"]];
     NSLog(@"Fetch Request: %@", fetchRequest);
    NSArray *appts = [[[DataManager sharedInstance] managedObjectContext] executeFetchRequest:fetchRequest error:&error];
    NSLog(@"Fetch Request Results: %i %@ - %@", [appts count], appts, error);

Однако он не возвращает никаких результатов, и я знаю, что результаты есть.

Вход:

2012-02-24 14:16:29.332 MyApp[2687:fb03] Fetch Request: <NSFetchRequest: 0xb7641c0> (entity: Appointments; predicate: (date == "$currDate"); sortDescriptors: ((null)); type: NSManagedObjectResultType; )
2012-02-24 14:16:29.334 MyApp[2687:fb03] Fetch Request Results: 0 (
) - (null)

Однако, если я изменю $currDate на 20120224 внутри скриншота выше в Xcode, он будет работать нормально.

Я неправильно делаю переменную для шаблонов запросов на выборку в xcode 4.2?

ОБНОВЛЕНИЕ 1:

Так это должно выглядеть так? enter image description here

1 Ответ

3 голосов
/ 25 февраля 2012

Щелкните по имени атрибута, которое в вашем случае равно date, и выберите «Выражение» во всплывающем меню.Это позволяет вам вводить переменные.

В вашем случае установите поле Выражение на: date == $currDate

Это работает для меня.

РЕДАКТИРОВАТЬ: Чтобы получить больше как Xcode3 дерева типа ситуации, вы держите нажатой клавишу выбора, вы можете добавить предикаты таким же образом.Знак «+» меняется на «...», когда вы удерживаете клавишу выбора следующим образом:

Hold down the option key

Таким же образом вы можете добиться того же результата.

...