#ios #xcode #sqlite #core-data
#iOS #xcode #sqlite #основные данные
Вопрос:
я хотел бы получать результаты из объекта и фильтровать результат с помощью атрибута из другого объекта.
у меня есть 2 объекта:
Пользователи{идентификатор пользователя, имя_файла, фамилия_имя}
UsersPhoneNumbers{phone_id, идентификатор пользователя, phone_number}
в SQL это должно выглядеть следующим образом:
select * from Users where Users.user_id in (select user_id from UsersPhoneNumbers where phone_number = ' 972-54-...')
Ответ №1:
Вероятно, вы захотите добавить связь между вашей пользовательской сущностью и UsersPhoneNumbers.
Т.е. это будет выглядеть следующим образом:
Users{user_id,first_name,last_name,phone_number}
UsersPhoneNumbers{phone_id,user,phone_number}
Затем используйте запрос на выборку на основе этого отношения:
NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Users"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"phone_number.phone_number like[cd] %@", @" 972-54*"];
NSArray* users = [managedObjectContext executeFetchRequest:fetchRequest error:nil];
Комментарии:
1. Как мне добавить связь между атрибутами? Users.user_id-> UserPhoneNumbers.user_id
2. @RonFridman, в вашем файле модели данных (xcdatamodel) вы хотите добавить новую «связь» с вашим объектом Users. Задайте его имя как «phone_number», назначение как «UserPhoneNumbers». Сделайте то же самое для своих пользовательских номеров. Затем установите «обратный», когда оба определены (вы получите предупреждение, если вы не установите их — это автоматически добавит обратные ссылки — так, например, если вы установите user.phone_number, PhoneNumber.user устанавливается автоматически). Я бы рекомендовал проверить ссылку на CoreData