coredata – выбор одного атрибута в массив
Цель: Я хотел бы получить значение одного атрибута (из сущности) из базы данных (основных данных) в массив.
пример
Наименование организации = сотрудники
- Исходные данные извлечения данных nil check failing / неожиданные результаты?
- iOS CoreData NSPredicate для запроса сразу нескольких свойств
- Нечувствительность к регистру Сравнение с основными данными и скоростью
- Ошибка NSPredicate, executeFetchRequest
- NSFetchedResultsController пытается ограничить количество отображаемых записей
Атрибут = employeeID
Я просто хочу, чтобы все идентификаторы employeeID были заполнены в массив / набор.
Вопрос
Ниже приводится моя реализация, я просто чувствую, что это своего рода раунд, я хотел бы знать, есть ли лучший способ сделать это.
Код
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employees"]; fetchRequest.resultType = NSDictionaryResultType; [fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"employeeID", nil]]; NSError *error = nil; NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; NSMutableArray *employeeIDs = [NSMutableArray array]; for(id currentRecord in results) { [employeeIDs addObject:[currentRecord objectForKey:@"employeeID"]]; }
- Не найден объект в coredata после добавления в отношения
- выборка любых данных, содержащих данные ядра ID
- NSPredicate от выбора основных данных по идентификатору объекта (и потенциальному суммированию)
- ios NSFetchRequest, упорядочить дочерние объекты
- Примите меры, когда два отдельных NSFetchRequests завершены
- Форма NSPredicate из строки, содержащей идентификаторы
- Как сделать запрос на выборку, используя новую функцию fetchRequest NSManagedObject?
- iOS: NSPredicate, использующий NSDate для сравнения
Вы можете избежать последнего цикла цикла,
Вместо,
NSMutableArray *employeeIDs = [NSMutableArray array]; for(id currentRecord in results) { [employeeIDs addObject:[currentRecord objectForKey:@"employeeID"]]; }
Попробуй это,
NSMutableArray *employeeIDs = [results valueForKey:@"employeeID"];
Один из способов сделать это –
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employees"]; fetchRequest.resultType = NSDictionaryResultType; NSError *error = nil; NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; NSMutableArray *employeeIDs = [results valueForKey:@"employeeID"];