生成大量数据,并实时加载到NSTableView中

时间:2016-03-19 16:10:39

标签: swift macos asynchronous nstableview

我是OS X开发的新手,当我想在NSTableView中显示我生成的数据(大约100000行)时,我发现tableview的刷新不是很顺利。我希望在生成每个新数据时刷新tableview,人们可以通过他们的眼睛实现这个过程。

以下是我的代码的一部分:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { () -> Void in

        //var endTime: NSTimeInterval!

        for i in 1...100000 {
            //generate
            self.models.append(DBMSModel(time: self.generateTime(NSTimeInterval(i)), money: Float(i), payType: self.payType[i % 4], payPlace: self.place[i % 4]).contentData)

//                endTime = NSDate().timeIntervalSince1970

            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                self.mainTableView.reloadData()

                let numOfRows = self.mainTableView.numberOfRows

                if numOfRows > 0 {
                    self.mainTableView.scrollRowToVisible(numOfRows - 1)
                }
            })

        }

        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            self.performSegueWithIdentifier("ResultAlert", sender: endTime - startTime)
        })
//            self.performSegueWithIdentifier("ResultAlert", sender: endTime - startTime)
    }

我使用新线程生成数据,然后通知主线程刷新tableview,但我能够意识到tableview刷新了大约四次。如何改进此代码以使UI更有效地刷新?

1 个答案:

答案 0 :(得分:0)

好吧,我好像以愚蠢的方式解决了这个问题......

hbm2ddl.auto

只需将tableview的reloaddata次数减少到100次,我发现UI动画比以前更流畅......