VC1 TableView에서 “운동"
을 선택했고, VC2 TableView에서 다양한 운동들이 나왔다.
VC2에 검색창이 있고 “아령"
이 들어간 운동만 출력하려고 한다면 어떻게 해야할까?
그땐 2개의 NSPredicate
를 적용시켜야한다.
그때 사용할 수 있는 것이 NSCompoundPredicate
이다.
이 객체는 NSPredicate
를 2개 이상 받을 수 있다.
코드사용은 아래와 같다. 여러개의 NSPredicate
를 배열에 넣는다.
NSCompoundPredicate(andPredicateWithSubpredicates: [categoryPredicate, addPredicate])
위와 같이 “운동”
으로 한번 필터링 후, “아령”
이 들어간 것을 검색해본다면 아래와 같을 것이다.
// 파라미터 predicate 가 "아령"을 받는 부분이다.
func loadData(with request: NSFetchRequest<TodoListModel> = TodoListModel.fetchRequest(), predicate: NSPredicate? = nil) {
// 카테고리가 "운동"인 것을 필터링한다.
let categoryPredicate = NSPredicate(format: "parentCategory.name MATCHES %@", selectedCategory!.name!)
if let addPredicate = predicate {
// 여기서 복합 필터링한다.
let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [categoryPredicate, addPredicate])
request.predicate = compoundPredicate
} else {
request.predicate = categoryPredicate
}
// 그 후 요청한 데이터 가져오기.
do {
itemArray = try context.fetch(request)
} catch {
print("Fetch Error : \(error)")
}
}
반응형
'개발 > Swift' 카테고리의 다른 글
[Swift/SPM] SwipeCellKit으로 스와이프로 삭제하는 기능 추가, VC간 공유하기 (with. Realm) (0) | 2022.06.26 |
---|---|
[Swift/Realm] List-LinkingObject 로 관계 설정한 데이터 Read, Create, Update 하기. (0) | 2022.06.26 |
[Swift] 서치바 검색한 데이터만 불러오기 (CoreData) (0) | 2022.06.24 |
[Swift/Realm] Object 만들고 가져오기 (0) | 2022.06.24 |
[Swift] Coredata 데이터 다루기(저장, 삭제, 불러오기) (0) | 2022.06.24 |