ios Coredata 关联 UITableView 数据自动更新
昨天写了一篇关于coredata的文章,自己觉得挺傻的文章。没想其它程序员看过后觉得更傻,于是今天决定写一篇厉害点的,首先写了一个coredata和uitableview结合的框架,非常简单实现了数据变化时对应的uitableview的视图也变化的效果。
1.考虑到很多地方都要用到fetchedresultscontroller这个功能,如果每个类里都写的这些代码的话,看着很不简约,于是就写了SQCFetchedResultsController这个类文件,首先考虑它和外部类的对接部分:
a.需要有个NSFetchedResultsController的属性
b.uitableviewcell的名字和reuseIdentifier,这里就合二为一了
c.一个暂停的属性
d.初始化方法
e.定义一个协议,因为cell的内容不一样,所以由大家自己来填充内容,- (void)configCellData:(id)data cell:(id)cell;
另外一个方法是点击cellrow会出发的方法,
2. 好的,把这些定义好之后开始写实现的方法,在这里面需要由初始化的时候传过来一个tableview,所以在这里是实现uitableview的datasource和delegate的方法
其实感觉FetchedResultsController和uitableview的datasource差不多都是有section和row,section.numberOfObjects就是数据库中的section的数据的个数
3.在创建uitableviewcell的时候用了一个通用的方法NSClassFromString,根据传过来的字符串,创建cell,这里要确保工程里面包含这个cell,如果是用系统的就传UITableViewCell就行了。
4.cell上的怎么显示数据就由程序员门自己来搞了 [_delegate configCellData:data cell:cell];
5.通过set方法来设置sqcFetchedResultsController的delegate,并且通过设置delegate为nil和self来控制是否暂停
6.最后实现FetchedResultsController的自动改变数据的delegate方法即可,
7.用的时候就比之前那个傻傻的方法要简单多了,创建一个对象,并且实现两个delegate方法,就行了,
8.注意了,这里创建对象的时候需要一个fetchedResultsController,而创建这个fetchedResultsController最好是在你需要的那个entity里面创建
好了,结束。之前的代码已经被我覆盖掉了,新代码在这里:https://github.com/sunqichao/TestCoreData
ios Coredata 关联 UITableView 数据自动更新的更多相关文章
- 在论坛中出现的比较难的sql问题:9(触发器专题 插入数据自动更新表数据)
原文:在论坛中出现的比较难的sql问题:9(触发器专题 插入数据自动更新表数据) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所 ...
- iOS开发NSFetchedResultsController的使用CoreData和TableView数据同步更新
1.效果 2.代码 #import "ViewController.h" #import "Student+CoreDataProperties.h" #def ...
- iOS企业版使用第三方实现自动更新版本
1.获取本地版本和互联网版本 NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; N ...
- iOS自动更新如何实现
APP检测更新可以使用两种方法.第一种是和安卓等系统一样,获取自己服务器的APP版本号与已安装的APP版本号比较:第二种是根据已发布到app store上的应用版本号与已安装的APP版本号比较更新.第 ...
- ios开发 数据库版本迁移手动更新迭代和自动更新迭代
数据库版本迁移顾名思义就是在原有的数据库中更新数据库,数据库中的数据保持不变对表的增.删.该.查. 数据持久化存储: plist文件(属性列表) preference(偏好设置) NSKeyedArc ...
- ios开发数据库版本迁移手动更新迭代和自动更新迭代艺术(二)
由于大家都热衷于对ios开发数据库版本迁移手动更新迭代和自动更新迭代艺术(一)的浏览下面我分享下我的源文件git仓库: 用法(这边我是对缓存的一些操作不需要可以省去):https://github.c ...
- 如何屏蔽 iOS 软件自动更新,去除更新通知和标记
适用于 iOS.iPadOS 和 watchOS,即 iPhone.iPad 和 Apple Watch 通用. 请访问原文链接:https://sysin.org/article/Disable-i ...
- 解决“iOS 7 app自动更新,无法在app中向用户展示更新内容”问题
转自cocoachina iOS 7能在后台自动app,这对开发者来说和用户都很方便,但是还是有一些缺点.用户不会知道app本次更新的内容,除非他们上到app的App Store页面去查看.开发者也会 ...
- 自动更新开奖数据的excel文件,供大家下载
自动更新开奖数据的excel文件,供大家下载 2010-03-14 20:22 228492人阅读打印来源:乐彩网 作者:eren 很多人拥有自制excel电子表格,常要更新最基本的开奖信息.如有多期 ...
随机推荐
- maven pom文件结构简析
要使用maven,入门的最好办法就是在myeclipse中直接新建一个maven项目,同时勾选create a simple project选项,这样能快速创建一个简单的默认类型的符合maven默认结 ...
- Quartz.NET开源作业调度框架系列(三):IJobExecutionContext 参数传递-转
前面写了关于Quartz.NET开源作业调度框架的入门和Cron Trigger , 这次继续这个系列, 这次想讨论一下Quartz.NET中的Job如何通过执行上下文(Execution Conte ...
- 基于Echarts的股票K线图展示
发布时间:2018-10-31 技术:javascript+html5+canvas 概述 基于echarts的股票K线图展示,只需引用单个插件,通过简单配置,导入数据,即可实现炫酷复杂的K线 ...
- shell脚本把一些请求量非常高的ip给拒绝掉
需求: 根据web服务器上的访问日志,把一些请求量非常高的ip给拒绝掉!并且每隔半小时把不再发起请求或者请求量很小的ip给解封. 假设: 1. 一分钟内请求量高于100次的IP视为不正常请求 ...
- linux shell 脚本攻略学习17--正则表达式入门
正则表达式(也称为“regex”或“regexp”)是一种用来描述文本模式的特殊语法.在 Linux 系统上,正则表达式通常被用来查找文本的模式,以及对文本流执行“搜索-替换”操作以及其它功能. 正则 ...
- Xcode8 带来的新特性和坑
Xcode8新特性 Interface Builder 随着14年的iPhone6和6P出来之后,iPhone的屏幕尺寸也越来越多,屏幕适配是一个需要解决的问题,以后不一定苹果又出什么尺寸的iPhon ...
- zabbix3.0 安装时出现PHP Parse error: syntax error
httpd的错误日志 [Sun Mar :: ] [error] [client 由于系统yum默认安装的php版本是5.3.3 zabbix 3.0支持的平台,只支持php5.4以上的版本https ...
- opestack keystone 深入
一.概述 keystone 有两个endpoint端口,一个35357,用于管理,只有admin_role可以使用.一个是5000, 用于业务: 二.keystone中的路由 解析url,然后获取后端 ...
- MYSQL内存评估
### MySQL Memory Calculator Procedure ### http://kedar.nitty-witty.com/blog/calculte-mysql-memory-us ...
- 再说Android RecyclerView局部刷新那个坑
RecyclerView局部刷新大家都遇到过,有时候还说会遇见图片闪烁的问题. 优化之前的效果: 优化之后的效果: 如果想单独更新一个item,我们通常会这样做,代码如下: mLRecyclerV ...