[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🍎 Apple/SwiftData & CoreData

[CoreData] 기초개념 (2): Query & Sorting

inu 2022. 1. 3. 00:53
반응형

데이터베이스에서 그랬듯 Coredata에서도 조건을 주어 원하는대로 데이터를 가져올 수 있다. 또한 정렬순서도 결정할 수 있다.
조건을 줄 때는 NSPredicate 객체를, 정렬을 할 때는 NSSortDescriptor를 사용한다.


NSPredicate

어떻게 데이터를 필터링하고 불러올지를 결정하는 객체이다. SQL에서 쿼리문을 날리는 것과 비슷하게 쿼리문을 작성하고 요청할 수 있다.

let predicate = NSPredicate(format: "title CONTAINS %@", searchText)
request.predicate = predicate
  • NSPredicate의 쿼리문을 작성하고, 거기에 넣어줄 값이 필요하다면 뒤에 작성한다.
  • 위는 NSPredicate의 예시이다. title attribute에 searchText가 포함된 데이터만을 반환하도록 한다.
  • 이를 request의 predicate에 넣어주고 요청을 날리면 된다.
  • 자세한 문법은 아래 사이트를 참고하자.
  • 치트시트
  • 참고사이트

NSCompundPredicate

사용예시

NSCompundPredicate로 여러 NSPredicate 객체를 하나로 합칠 수 있다.


NSSortDescriptor

NSSortDescriptor는 정렬순서에 대한 정의를 할 수 있는 객체이다.

let sortDescriptor = NSSortDescriptor(key: "title", ascending: true)
request.sortDescriptors = [sortDescriptor]
  • 정렬을 할 attribute의 이름을 key값으로 주고, 오름차순인지 내림차순인지 적어준다.
  • 위는 NSSortDescriptor의 예시이다. title을 기준으로 오름차순으로 정렬된 데이터를 반환하도록 한다.
  • 이를 request의 sortDescriptors에 넣어주고 요청을 날리면 된다.
  • predicate와 다르게 값을 여러개 받을 수도 있다.
반응형