У меня есть объект Core Data, называемый Album; альбом имеет отношение к сущностям Песни (так называемые песни), и каждая песня имеет произвольное количество объектов тега (в свойстве тегов), теги имеют имя. Теперь я хочу проверить, содержит ли какая-либо из песен в альбоме тег; используя один NSPredicate.NSPredicates и отношения double to-n
An идеи, которые пришли на ум:
[NSPredicate predicateWithFormat: @"ANY (ANY songs).tags LIKE %@", someTagName];
Но это приводит к ошибке во время выполнения («Невозможно разобрать строку формата»). Я пробовал различные варианты, без успеха.
Есть ли способ сделать это?
Звучал очень хорошо, я пробовал, но я снова застрял. Обычно это не происходит со мной так часто ... Теперь я получаю следующее исключение: *** Завершение приложения из-за неотображенного исключения «NSUnknownKeyException», причина: '[ valueForUndefinedKey:]: объект Альбом не соответствует ключевым словам, совместимым с ключевыми «песнями». @ DistinctUnionOfSets.labels ». Я пробовал раунд, но я просто не мог найти место, где я мог бы разместить @distinctUnionOfSets, не вызывая такого краха. Любые подсказки, что я делаю неправильно? –
2009-08-13 21:17:24
@Julian Извините, это моя ошибка для написания без тестирования. Поскольку у меня нет проекта Core Data, с которым я играю, я работаю сверху. Вы пытались @unionOfSets, а не @distinctUnionOfSets? Я всегда немного борюсь с этими операторами. Мне часто приходится ставить точку останова на строке, например [album valueForKeyPath: @ "@ songs.tags"] и посмотреть, что результат в отладчике. Если это набор наборов, то @ unionOfSets.songs.tags должен это сделать. Если это что-то еще, тогда вам нужно соответствующим образом изменить путь к ключу. –