Вы не можете думать о базовых данных как о SQL. В Core Data не существует такой вещи, как «соединение». В этом случае вы пытаетесь найти пересечение двух наборов объектов. Близко к объединению логически, но не в деталях реализации. И программист дьявол всегда в деталях.
Попробуйте использовать логическое равенство "==" следующим образом:
@"Category.categoryName == %@ AND LanguageSet.languageSetName == %@"
Я верю, что это решит вашу проблему.
В модели данных есть скрытый редактор предикатов. Это может помочь вам настроить предикаты, даже если вы не встраиваете их в выборки в самой модели. Просто выберите сущность, в вашем случае «LanguageEntity», затем добавьте Запрос на получение . Появится предикат редактирования, и вы можете использовать диалоговое окно для создания предиката. Он будет отображать текстовую версию предиката, которую вы можете скопировать в свой код.