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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
12.09.2014, 15:19     Предикат в NSFetchRequest #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
Посмотрите здесь:

Prolog Предикат see
Предикат Fail Prolog
Предикат Pascal ABC
Prolog Предикат Subterm
предикат C++
Предикат Turbo Pascal
Предикат
Prolog Определить предикат right(+X,+N,?R)
Описать предикат Prolog
C++ Предикат сортировки
Prolog Предикат plus(?X, ?Y, ?Z)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Ответ Создать тему
Опции темы

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