Форум программистов, компьютерный форум CyberForum.ru

Swift

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
#1

Предикат в NSFetchRequest - Swift

12.09.2014, 15:19. Просмотров 1555. Ответов 1
Метки нет (Все метки)

Всем привет!

По рекомендации форумчан делаю для себя тренировочный проект на Swift, пытаясь интегрировать туда максимум разноплановых вещей, и, вот, застрял на одном моменте связанном с CoreData:

Задача - сделать выборку сущностей из базы, в которых определенное строковое поле равно одному из перечисленных значений.

Сделал общий тест функционала с хардкорным кол-вом возможных вариантом, среди которых надо выбирать. Так работает:
Objective-C
1
fetchRequest.predicate = NSPredicate(format: "type MATCHES '.*(%@ | %@).*'", argumentArray: ["Opera", "Ballet"])
Но есть необходимость сделать кол-во аргументов для сравнения переменным. Чтобы мы могли передать в метод массив со строковыми значениями, и использовать его для сравнения.

Сделал так:
Objective-C
1
2
fetchRequest.predicate = NSPredicate(format: "type IN %@", argumentArray: typesArray)
let fetchedObjects = managedObjectContext!.executeFetchRequest(fetchRequest, error: &error)
Но тут валится эксепшн на второй строке с текстом
Objective-C
1
-[Swift._NSContiguousString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x78ff0a20
Пока не могу понять, как правильно организовать этот процесс..
Буду рад советам!

Добавлено через 33 минуты
Спустя некоторое время удалось сделать таким образом:
Objective-C
1
2
3
4
5
6
7
var predArray : Array<NSPredicate> = []
        
        for typeStr : String in typesArray {
            predArray.append(NSPredicate(format: "type LIKE %@", typeStr))
        }
       ...
        fetchRequest.predicate = NSCompoundPredicate(type: NSCompoundPredicateType.AndPredicateType, subpredicates: predArray)
Не знаю, правда, насколько это оптимальное решение.. Кажется, что не очень.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2014, 15:19     Предикат в NSFetchRequest
Посмотрите здесь:

Предикат - Логика и множества
Ребят,нужна очень помощь. Условие. Для заданного предиката с помощью кванторов общности и существования постройте все возможные...

Предикат - Pascal ABC
Написать программу, которая определяет истинность предиката. L=(NOT(C)AND D) OR (A XOR B). Где A = (ctg(x)=tg(x)), B=FALSE, C=...

Предикат see - Prolog
Объясните предикат see и приведите пожалуйста примеры, где он используется.

Предикат - Turbo Pascal
Составить программу которая находит выражение предиката определяющего выражение множеств содержащее операции U , пересечение, /, -.

Предикат plus(?X, ?Y, ?Z) - Prolog
Здравствуйте, помогите решить задачу, в прологе новичок. Напишите вариант программы plus(?X, ?Y, ?Z), пригодный для сложения,...

предикат - C++
Здравствуйте, не могу понять что должна принимать функция в качестве предиката. Вот допустим контейнер vector, можете привести маленький...

Определить предикат right(+X,+N,?R) - Prolog
/* Определите предикат right(+X,+N,?R) – истинный тогда и только тогда, когда атом R имеет длину N, и атом X является окончанием R, а...

Предикат anagram - Prolog
Помогите пожалуйста. anagram(+List,?Anagram). Предикат anagram(List, Anagram) принимает значение &quot;истина&quot;, если список Anagram...

определить предикат ... - Prolog
Имеется N объектов и заданы отношения между ними:родитель, мужчина, женщина. Требуется определить предикат внуки и найти всех внуков и...

Создать предикат - Prolog
Здравствуйте! Помогите пожалуйста с задачками, кто чем сможет. Заранее благодарю. 1. Создать предикат, определяющий является ли число...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yurybelevskiy
0 / 0 / 0
Регистрация: 18.08.2016
Сообщений: 1
18.08.2016, 13:03     Предикат в NSFetchRequest #2
Попробуйте указать Ваш предикат в формате:
Objective-C
1
NSPredicate(format: "type IN %@", typesArray)
(необходимо убрать argumentsArray)
Yandex
Объявления
18.08.2016, 13:03     Предикат в NSFetchRequest
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru