본문 바로가기

 

 


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

 

댓글