본문 바로가기
코딩 공부/Swift

[MacOS] 코어데이타 Fetch Requests

by JH-M 2022. 8. 18.

 

 


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

 

댓글