Позвольте мне начать с этого совета. Базовые данные не являются SQL. Сущности не являются таблицами. Объекты не являются строками. Столбцы не являются атрибутами / свойствами. Базовые данные - это система управления графом объектов, которая может сохранять или не сохранять объектный граф, а может и не использовать SQL для этого далеко за кулисами. Попытка представить базовые данные в терминах SQL приведет к тому, что вы полностью неправильно поймете базовые данные и приведет к большим трудностям и потерянному времени.
Поскольку базовые данные основаны на объектах, при выполнении выборки вы получаете массив объектов. Чтобы найти конкретные значения, вы затем запрашиваете у этих объектов значения их соответствующих атрибутов.
Предположим, у вас есть следующая сущность:
User{
userName:string
userID:string
}
... и хотите найти всех пользователей, чьи userName соответствуют массиву строк userID. Вы должны создать NSFetchRequest и установить его сущность на «Пользователь». Тогда вы бы использовали предикат, подобный этому:
[NSPredicate predicateWithFormat:@"userID IN %@",arrayOfUserIDs];
Выборка вернет массив NSManagedObjects (или подкласса), настроенный с ключами имени атрибута объекта User
. Чтобы найти значение атрибута userName
каждого управляемого объекта в массиве, вы должны запросить у объекта значение его атрибута следующим образом:
NSString *aUserName=[aUserEntityObject valueForKey:@"userName"];
Просто забудьте все, что вы знаете о SQL или аналогичных системах баз данных. Базовые данные на самом деле не являются базой данных, поэтому попытка думать об этом в таких терминах просто смущает вас. Базовые данные - это все об объектах.