Я думаю, вам нужно собрать свой результат в двух разных коллекциях. Создайте запрос на выборку для города вместо этого, используя тот же предикат, что и выше, но как обычный запрос вместо подзапроса.
Это вернет массив экземпляров города, которые соответствуют вашим критериям поиска, чтобы получить выбор стран, которые вы могли бы извлечь из массива городов
//fetch and predicate declaration...
let cities: [City] = try! context.fetch(request)
let countries = Set<Country>(cities.map({$0.country }))
. Предполагается, что вы определили отношение обратного к одному от города к стране