你设计上有问题,如果tableview的数据源是来自coredata的,那么你在coredata中数据有变动只要[tableview reloaddata]一下就可以了遵守mvc架构,模型要建好,不要在v上做insert等动作

解决方案 »

  1.   


    好吧,确实如你所说,把那个删除掉fetchedResultsController 的 didChangeObject就行了。如果我仅仅修改了一条数据也要刷新整个列表。
    但是我原本的初衷是想提高运行效率,所以再请问下,我内存数据已修改,并且分组。
    我该如何只把那条数据插入到分组中呢?
      

  2.   

    你可能还不是很了解uitableview的机制,reloaddata并不会导致全表刷新的,放心的用吧
    uitableview只会通过代理方法获取当前你作为数据源的数组的总数,但并不会全部去取出来显示,他会根据你设计的tableview的高度和宽度计算出当前的需要显示的记录数,一般一屏幕顶天也就显示个十几二十条,之后才会去取这十几二十条的数据来显示在cell中,所以他每次都只获取可见cell的数据(移动设备就可怜的那么点内存,如果数据源有上万条数据,每条都画出cell的话内存早就爆了),而且还有很高效的重用机制.当然还有一个方法也可以用,那就是beginupdate和endupdate,个人感觉这个和relaoddata并没有太大的区别
      

  3.   

    个人觉得uitableview是苹果所有控件中最精彩的设计,没有之一,非常值得学习