2012-04-01 7 views
1

Обновление к вопросу ниже: Мы смогли запросить дочерний объект, используя запрос выборки объекта Отца, используя отношения fatherChild. Пример запроса выглядит следующим образом:Как создать один fetchRequest для нескольких объектов?

NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"fatherChild.name LIKE 'fx'"]; 

Теперь то, что мы пытаемся сделать, это использовать предикат выше, но другой другое условие, где мы хотим, чтобы найти ребенка для данного имени отцов. Мы использовали следующий код

NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"name LIKE 'john' AND ANY fatherChild.name in 'fx'"]; 

Но программа разбилась за исключением: [__NSCFString countByEnumeratingWithState: объекты: Кол-во:]: непризнанный селектор послал к примеру 0xad49c40

Чтения с помощью примеров, которые мы видим, мы можем использовать подзапрос но не уверен, что будет синтаксисом для нашего случая, когда у нас есть сущность с отношением один к многим. Любая помощь будет оценена по достоинству?

Спасибо.

Вопрос: У нас есть модель данных с тремя объектами: Отец, Мать и дитя. См. Изображение для справки.

запрос Запрос Пример мы имеем на отца субъекта приводится ниже:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Father" 
              inManagedObjectContext:managedObjectContext]; 
    [request setEntity:entity]; 

    NSString *attributeName = @"name"; 
    NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"%K like %@", 
    attributeName, searchField.text]; 

Мы имеем подобный запрос запрос для матери и ребенка лиц. Мы хотели бы создать один запрос, чтобы объединить объекты Отца и Матери. Например, мы хотим найти по имени отца = Mike и Mothers name = Jen в одном запросе. Как мы делаем это?

Спасибо за ваш ответ.

+1

Вы говорите, что хотите получить два разных типа результатов из одного запроса или что вы пытаетесь найти детей, где 'mother.name == foo' и' father.name == bar'? –

+0

Последнее, что мы пытаемся сделать. Спасибо! – user1306828

ответ

1

Мы выяснили, что мы можем решить проблему, используя SUBQUERY.

NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"name LIKE %@ AND fatherMother.name LIKE %@ AND (0!=SUBQUERY(fatherChild,$varChild,$varChild.name=%@)[email protected])",dad.text, mom.text, baby.text];         

Здесь fatherMother и fatherChild имена отношений.

dad.text, mom.text и baby.text UITextField значения.

+0

@tangqiaoboy У меня есть аналогичный вопрос здесь (http://stackoverflow.com/questions/11934763/nspredicate-on-nested-object-nsset-to-filter-the-result-during-nsfetchrequest) ... У меня есть попробовал следующий предикат: [NSPredicate predicateWithFormat: @ "mode = 0 AND ALL (SUBQUERY (зачисления, $ varEnrollment, $ varEnrollment.mode = 0))"], но это не сработало для меня, в моих предикатных зачислениях мой отношения ... можете спросить меня, где я делаю неправильно? – yunas

+0

@yunas Извините, я не знаю, вы должны спросить 'user1306828', он является автором ответа. Я просто помогу ему отформатировать код в ответе. – tangqiaoboy

Смежные вопросы