2015-11-26 6 views
0

Hiho,Поиск массивов в Realm (iOS)

У меня возник вопрос о запросе базы данных царства. У меня есть объекты realm, которые содержат функции в RLMArray. Я хочу найти все объекты, которые содержат все функции из заданного массива. И в другом случае я хочу найти весь объект, который имеет один функций.

Я пытаюсь что-то вроде этого (также с IN):

NSArray *featureArray = @[@"feature1", @"feature2"]; 
    RLMResults* containedObjects = [MyObject objectsWhere:@"features CONTAINS %@", featureArray]; 

Но получить ошибки как: RLMArray predicates must use aggregate operations

Я думаю, что проблема в том, что область должна проверить массив с массивом для согласования , В SQL я думаю, что JOIN-Operation будет хорошим (не очень эффективным) способом, но я не могу найти эквивалентную операцию в NSPredicate.

Благодарим за каждый намек!

ответ

1

Как вы не можете хранить массивы значений в Realm, я думаю, что MyObject бы в таком случае соотношения/список свойства многих класса Feature, которые могут быть идентифицированы по их name.

CONTAINS с NSPredicate не то, что вы ищете здесь. Это string comparison operator.

Вы можете использовать оператор IN, как показано ниже:

NSArray *featureArray = @[@"feature1", @"feature2"]; 
RLMResults* containedObjects = [MyObject objectsWhere:@"features.name IN %@", featureArray]; 

Примечание: Вам не придется беспокоиться о производительности, так как ссылки первого класса гражданина в Realm, не существует дорого присоединитесь операции здесь.