zoukankan      html  css  js  c++  java
  • ios Coredata 关联 UITableView 数据自动更新

    昨天写了一篇关于coredata的文章,自己觉得挺傻的文章。没想其它程序员看过后觉得更傻,于是今天决定写一篇厉害点的,首先写了一个coredatauitableview结合的框架,非常简单实现了数据变化时对应的uitableview的视图也变化的效果。

     

     

     1.考虑到很多地方都要用到fetchedresultscontroller这个功能,如果每个类里都写的这些代码的话,看着很不简约,于是就写了SQCFetchedResultsController这个类文件,首先考虑它和外部类的对接部分:

     a.需要有个NSFetchedResultsController的属性

     b.uitableviewcell的名字和reuseIdentifier,这里就合二为一了

     c.一个暂停的属性

     d.初始化方法

     e.定义一个协议,因为cell的内容不一样,所以由大家自己来填充内容,- (void)configCellData:(id)data cell:(id)cell;

     另外一个方法是点击cellrow会出发的方法,


     

     2. 好的,把这些定义好之后开始写实现的方法,在这里面需要由初始化的时候传过来一个tableview,所以在这里是实现uitableviewdatasourcedelegate的方法

        其实感觉FetchedResultsControlleruitableviewdatasource差不多都是有sectionrowsection.numberOfObjects就是数据库中的section的数据的个数


     

     3.在创建uitableviewcell的时候用了一个通用的方法NSClassFromString,根据传过来的字符串,创建cell,这里要确保工程里面包含这个cell,如果是用系统的就传UITableViewCell就行了。


     

     4.cell上的怎么显示数据就由程序员门自己来搞了 [_delegate configCellData:data cell:cell];

     

     5.通过set方法来设置sqcFetchedResultsControllerdelegate,并且通过设置delegatenilself来控制是否暂停


     

     6.最后实现FetchedResultsController的自动改变数据的delegate方法即可,


     

     7.用的时候就比之前那个傻傻的方法要简单多了,创建一个对象,并且实现两个delegate方法,就行了,


     

     8.注意了,这里创建对象的时候需要一个fetchedResultsController,而创建这个fetchedResultsController最好是在你需要的那个entity里面创建

     

     

     好了,结束。之前的代码已经被我覆盖掉了,新代码在这里:https://github.com/sunqichao/TestCoreData

  • 相关阅读:
    POJ2352
    POJ 2524 并查集
    A POJ1611
    树状dp--B
    spring mvc实现文件上传与下载
    Joda-Time
    JAVA对象与JSON之间的转换
    jackson-databind注解
    JPA注解
    springMVC、spring、jpa、springData整合配置
  • 原文地址:https://www.cnblogs.com/ios8/p/ios-Coredata-UITableView.html
Copyright © 2011-2022 走看看