1. 오브젝트 ID 로 가져오기
let managedObjectID = managedObject.objectID let context = persistentContainer.viewContext let object = try context.existingObject( with: managedObjectID )
2. 오브젝트 한개만 가져오기
let fetchRequest = // NSFetchRequest fetchRequest.fetchLimit = 1 let context = persistentContainer.viewContext // 오브젝트가 없다면 nil 리턴 let object = try context.fetch(fetchRequest).first
3. Predicate 로 오브젝트 가져오기
let fetchRequest: NSFetchRequest<Entity> fetchRequest = Entity.fetchRequest() fetchRequest.predicate = NSPredicate( format: "name LIKE %@", "Robert" ) let context = persistentContainer.viewContext let objects = try context.fetch(fetchRequest)
4. 한개 이상의 Predicate 로 오브젝트 가져오기
let fetchRequest: NSFetchRequest<Entity> fetchRequest = Entity.fetchRequest() let namePredicate = NSPredicate( format: "name LIKE %@", "Robert" ) let planetPredicate = NSPredicate( format: "country = %@", "Earth" ) fetchRequest.predicate = NSCompoundPredicate( andPredicateWithSubpredicates: [ namePredicate, planetPredicate ] ) let context = persistentContainer.viewContext let objects = try context.fetch(fetchRequest)
5. 모든 오브젝트 가져오기
let fetchRequest: NSFetchRequest<Entity> fetchRequest = Entity.fetchRequest() let context = persistentContainer.viewContext let objects = try context.fetch(fetchRequest)
6. 멀티 엔티티(Entity) 오브젝트 가져오기

let fetchRequest: NSFetchRequest<Fruits> fetchRequest = Fruits.fetchRequest() let context = persistentContainer.viewContext let objects = try context.fetch(fetchRequest) for object in objects { if let object = object as? Apple { print("price:", object.price) } else if let object = object as? Banana { print("price:", object.price) } }
엔티티 Apple, Banana 의 `Parent Entity` 속성으로 Fruits 로 설정되어 있을때 Fruits 엔티티를 호출하면 Apple, Banana 엔티티 모두 가져올 수 있습니다.
참고
https://www.advancedswift.com/fetch-requests-core-data-swift/
Core Data Fetch Requests
Learn how to make queries using fetch requests in Core Data for objects by ID, predicate, and entity with Swift.
www.advancedswift.com
댓글