[swift] Swift IGListKit에서 컬렉션 뷰 셀 필터링하기

IGListKit은 Instagram에서 개발한 iOS용 UICollectionView 기반의 강력한 라이브러리입니다. IGListKit은 데이터 변화를 자동으로 감지하여 컬렉션 뷰를 업데이트해주고, 다양한 기능을 제공합니다.

이번 블로그 포스트에서는 IGListKit을 사용하여 컬렉션 뷰 셀을 필터링하는 방법에 대해 알아보겠습니다. 이를 통해 데이터를 조작하고 원하는 결과만을 보여주는 컬렉션 뷰를 구현할 수 있습니다.

IGListKit 필터링 적용하기

  1. 먼저, IGListKit을 프로젝트에 추가합니다. CocoaPods을 사용한다면 Podfile에 다음을 추가하고 pod install 명령어를 실행하세요.
pod 'IGListKit'
  1. IGListKit을 사용하여 데이터를 관리할 모델 클래스를 작성합니다. 각 모델은 필터링 조건에 따라 다른 컬렉션 뷰 셀로 나타날 것입니다. 예를 들어, Person이라는 모델을 가정하고, nameage 두 가지 속성을 갖는다고 가정해보겠습니다.
class Person: ListDiffable {
    let name: String
    let age: Int
    
    func diffIdentifier() -> NSObjectProtocol {
        return name as NSObjectProtocol
    }
    
    func isEqual(toDiffableObject object: ListDiffable?) -> Bool {
        guard let object = object as? Person else {
            return false
        }
        
        return self.name == object.name && self.age == object.age
    }
}
  1. IGListKit을 사용하여 컬렉션 뷰를 구성합니다. 필터링을 적용하려면 IGListAdapterDataSource 프로토콜을 구현하는 클래스가 필요합니다. 아래는 간단한 예시입니다.
class MyListAdapterDataSource: NSObject, IGListAdapterDataSource {
    var people: [Person] = []
    var filteredPeople: [Person] = []
    
    func filterPeople(withAge age: Int) {
        filteredPeople = people.filter { $0.age == age }
    }
    
    func objects(for listAdapter: IGListAdapter) -> [ListDiffable] {
        return filteredPeople
    }
    
    func listAdapter(_ listAdapter: IGListAdapter, sectionControllerFor object: Any) -> IGListSectionController {
        return PersonSectionController()
    }
    
    func emptyView(for listAdapter: IGListAdapter) -> UIView? {
        return nil
    }
}
  1. 필터링을 적용하고자 하는 곳에서 filterPeople 메서드를 호출하여 필터링된 데이터를 변경합니다. 이 예제에서는 나이를 기준으로 필터링하고 있습니다.
let dataSource = MyListAdapterDataSource()
let adapter = IGListAdapter(updater: IGListAdapterUpdater(), viewController: self)
adapter.dataSource = dataSource

...

dataSource.filterPeople(withAge: 30)
adapter.performUpdates(animated: true, completion: nil)

위의 코드에서 filterPeople 메서드를 호출한 후 adapter.performUpdates 메서드를 호출하여 컬렉션 뷰를 업데이트합니다. 필터링된 데이터만 표시되는 셀을 확인할 수 있습니다.

결론

이번 블로그 포스트에서는 IGListKit을 사용하여 컬렉션 뷰 셀을 필터링하는 방법에 대해 알아보았습니다. IGListKit을 활용하면 데이터 조작과 업데이트 과정을 간단하게 처리할 수 있으며 필터링된 컬렉션 뷰를 구현할 수 있습니다. IGListKit을 사용하면 데이터 주도 개발에 효과적인 도구를 사용할 수 있습니다.