Переменная запроса выборки основных данных в Xcode 4 - PullRequest
10 голосов
/ 07 июня 2011

Как мне добавить переменную к запросу выборки в основных данных в Xcode 4? Не могу найти это.

Ответы [ 4 ]

31 голосов
/ 08 августа 2012

Выберите Expression из выпадающего списка и введите выражение, используя $ перед переменной подстановки (NAME в приведенном ниже примере).Даже если значение переменной подстановки является строкой, убедитесь, что вы не ставите переменную между кавычками, иначе подстановка не будет работать.

Fetch predicate with substitution variable

В вашем коде вы ссылаетесь напредикат fetch, подобный этому (XCode 4.4 и выше):

NSManagedObjectModel* model = [[context persistentStoreCoordinator] managedObjectModel];
NSFetchRequest* request = [model fetchRequestFromTemplateWithName:templateName
                                            substitutionVariables:@{@"NAME" : name}];
NSError* error = nil;
NSArray* results = [context executeFetchRequest:request error:&error];
6 голосов
/ 10 июня 2012

Apple снова переместила его в последний XCode.Чтобы использовать переменные в запросах на выборку в редакторе основных данных, необходимо использовать тип «выражение» и ввести его вручную:

data == $ DATA

(в этом выраженииПеременная $ DATA).

2 голосов
/ 08 июня 2011

Если под переменной вы подразумеваете передачу значения в запрос выборки, то вы разделяете запрос? Тогда все, что вы делаете, это объявляете NSPredicate.

Примерно так:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"name" inManagedObjectContext:context];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(attribute == %@)", value];
[request setEntity:entity];
[request setPredicate:predicate];
NSError *error;
NSArray *results = [context executeFetchRequest:request error:&error];
[request release];
1 голос
/ 28 июля 2011

Возможно, вы уже нашли решение, но это заняло у меня некоторое время, и оно может сэкономить чужое время, поэтому вот оно: документация Apple объясняет это.

...