본문 바로가기

Swift

array.map과 tableView의 갱신 update

Realm을 사용하다보니 테이블뷰를 갱신할 일이 생겼다.

그런데 샘플로 참고하는 코드에서 테이블뷰를 갱신하면서 map을 사용하는 것이다. 처음에는 도대체 이게 뭔지 몰라서 한참 고민했는데 여기저기 검색하다보니 알게 되었다.



    func rightBarButtonPressed() {
        
        filterDate = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -1, toDate: filterDate, options:NSCalendarOptions(rawValue: 0))!
        dateFormatter.dateFormat = "yyyy.MM.dd"
        let colDate = dateFormatter.stringFromDate(filterDate)
        filterDate = dateFormatter.dateFromString(colDate)!
        
        
        let realms = Realms()
        let predicate = NSPredicate(format: "playdt >= %@", filterDate)
        results = realms.retreiveTB_RESULTLOG(predicate)
        let countResults = results.count
        if prevCountResults != countResults {
            
            if prevCountResults == 0 {
                prevCountResults = countResults
            }
            else {
                var insertions: [Int] = []
                for ii in prevCountResults..<countResults {
                    insertions.append(ii)
                }
                tableView.beginUpdates()
                tableView.insertRowsAtIndexPaths(insertions.map { NSIndexPath(forRow: $0, inSection: 0) }, withRowAnimation: .Automatic)
                tableView.endUpdates()
                prevCountResults = countResults
            }
        }
        else {
            let util = Util()
            self.presentViewController(util.alert("알림", message: "더 이상 데이터가 없습니다", ok: "확인", cancel: nil), animated: true, completion: nil)
        }
        
    }


Navi Bar의 오른쪽 버튼을 눌렀을 때 하루치 더 조회하고 그 결과를 테이블뷰에 반영하는 소스이다.