Использование NSPredicate для поиска атрибута NSArray основного объекта данных - PullRequest
1 голос
/ 13 января 2012

Я искал повсюду, чтобы найти решение этой проблемы. Все мои попытки приводят к 0 результатам. Вот общие структуры данных:

Core Data Entity A {
  stringAttribute string
  ....
  transformableAttribute(NSArray of NSString objects) keywords
}

где ключевые слова = [NSArray arrayWithObjects: @ "строка 1", @ "строка 2", @ "строка 3", ноль]

Я пытаюсь запустить предикат для поиска трансформируемого атрибута NSArray.

Я попробовал следующее для сущности А. Базовым хранилищем данных является хранилище sqlite.

NSString *term = @"string 1";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY keywords like[cd] %@", term];

----> Результаты 0 совпадений

NSArray *termArray = [NSArray arrayWithObject:@"string 1"];
NSPredicate *predicate = [NSPredicate predicateWithFormat@"ANY keywords in %@", termArray];

----> Результаты 0 совпадений

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(keywords, $x, $x like %@).@count > 0", term]

----> Приводит к ошибке, что несоответствие не может быть коллекцией подзапроса

Я пробовал некоторые варианты вышеизложенного, но все еще безрезультатно. Любой совет? Возможно ли это с данными Core?

Спасибо!

1 Ответ

0 голосов
/ 13 января 2012

Я не использую с transformableAttribute, который является элементом Базовых Данных, в который я не попал, но если я вспомню, вы не можете предсказать их.(так что, если я ошибаюсь, пожалуйста, кто-нибудь позвонит мне по этому поводу)

Но когда я вижу, что ваш transformableAttribute является array of string, я просто хочу сказать why do you want an array in a database?

Почемуне заводить отношения?Отношение один ко многим, если ваш массив может иметь разное количество строк.

Базовые данные - это абстракция базы данных, в БД вы не используете массив, вы используете таблицы.Это, вероятно, упростит вашу жизнь и сделает возможным получение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...