ios Coredata 关联 UITableView 数据自动更新

本文介绍了一个名为SQCFetchedResultsController的类,它将NSFetchedResultsController的功能与UITableView相结合,实现数据变化时对应的UITableView视图自动更新效果。通过此框架,开发者可以更简便地在应用中实现CoreData与UITableView的集成,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 20153345_9T7Y.jpg


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

 a.需要有个NSFetchedResultsController的属性

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

 c.一个暂停的属性

 d.初始化方法

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

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

20153346_Mq42.jpg


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

    其实感觉FetchedResultsController和uitableview的datasource差不多都是有section和row,section.numberOfObjects就是数据库中的section的数据的个数

20153346_4vds.jpg


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

20153347_dJlf.jpg


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


 5.通过set方法来设置sqcFetchedResultsController的delegate,并且通过设置delegate为nil和self来控制是否暂停

20153347_Ppud.jpg


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

20153348_5oYm.jpg


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

20153349_umyE.jpg


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

 20153349_DVtL.jpg

 

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

 

转载于:https://my.oschina.net/sunqichao/blog/177731

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值