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/
댓글