于是,开源社区中就出现了一系列将 SQLite API 进行封装的库,而 FMDB (https://github.com/ccgus/fmdb) 则是开源社区中的优秀者。...FMDB 在使用上相当方便。...另外,FMDB 同时兼容 ARC 和非 ARC 工程,会自动根据工程配置来调整相关的内存管理代码。...使用说明 ---- 该使用说明主要翻译自 fmdb 的 github 项目说明文档: https://github.com/ccgus/fmdb 引入相关文件 首先将 FMDB 从 github 上 clone...参考:在iOS开发中使用FMDB
概括: 我们先说说这两个东西,CoreData 和 FMDB,其实就我自己而言觉得这两个都不错,刚开始是接触FMDB的,CoreData是工作后自己看的。...在开发中你要是只是使用一张表去存储一点简单的东西,使用FMDB也方便,可是一旦表与表之间产生属性关联的话,用FMDB就比较的麻烦了。但用 CoreData 就比较的容易。 ...CoreData的使用: image.png 注意点和总结的地方: 先把里面会用到的类描述一下,知道它们是用来做什么,对应的都是那些东西。...FMDB: 我自己用着FMDB感觉一切还好,除了每次一懵逼,找找SQLite语句。 它的使用,网上真的是一大把,我就不再重复啰嗦了。...把FMDB官方的解释中文版链接给大家,有时间还是看看吧,毕竟不是每个人都知道官方解释说了什么。说不定就有遗落了的知识。 FMDB 使用方法 有一点你知道吗?
复习一下: 1、在控制器上添加一个UITableView, 暂时该UITableView控件变量名命名为为tableView, 设置控件代理,实现控制器的UITableViewDataSource,...UITableViewDelegate协议; 2、tableView控件的editing属性默认是NO, 并且UITableViewCell默认情况下没有删除和增加功能。 ...实现代理方法 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle...UITableViewCellEditingStyleInsert; } else{ return UITableViewCellEditingStyleDelete; } } //处理UITableViewCell的增加和删除功能...3、UITableViewCell的移动:实现一个代理方法,就可以进行单元格的移动: //实现此方法,就可以移动单元格, 方法里面是让数据和样式移动保持一致 - (void)tableView:(UITableView
使用这个方法的问题是它只能从bundle中获取文件 --- 换句话说,图片只能和app的源代码放在一起。...// Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView...通常,对于一个正常的,简单的里面包含很多subviews的UITableView来说,这已经是一个非常好的性能了。这样是非常好的,因为你不必在开始的时候就做很多工作。...正如在第1章和第2章提到的,你应该总是小心谨慎,避免过度优化。为了一个很小的性能优化而浪费太多的时间是非常不值得的。...当OS需要为TableView渲染一个新的cell,会通过调用下面的方法来返回一个新的cell: - (UITableViewCell *)tableView:(UITableView *)tableViewcellForRowAtIndexPath
关于FMDB最基本的使用我们就不在说了,这个网上大把的文章介绍,我就在这里总结几点我最近在写一个小东西的时候注意到的一点点东西: 一: 怎么看真机上SQLite数据库 我们在开发的过程中肯定有使用到真机测试...4、最好保存桌面,方便我们查看 然后你桌面就会有一份 .xcappdata 文件了,这时候你再“显示包内容” 就可以看到里面有一份 AppData 和 AppDataInfo.plist 文件...事务和程序是两个概念。一般地讲,一个程序中包含多个事务。 事务的开始与结束可以由用户显式控制。...事物完成时,数据必须是一致的,也就是说,和事物开始之前,数据存储中的数据处于一致状态。保证数据的无损。 ...Lsolation(隔离性)事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。对数据进行修改的多个事务是彼此隔离的。
在已经存在的表中,添加字段,更新表结构 /** Test to see if particular column exists for particular t...
CGRect(x:0, y:20, width: screenRect.size.width, height:screenRect.size.height - 20) 17 let tableView = UITableView...) -> Int { 25 return keys.count 26 } 27 28 func tableView(_ tableView:UITableView,numberOfRowsInSection...31 } 32 33 func tableView(_ tableView:UITableView, titleForHeaderInSection section:Int) -> String?...{ 34 return keys[section] 35 } 36 37 func sectionIndexTitles(for tableView:UITableView) - [String...{ 38 return keys 39 } 40 41 func tableView(_ tableView:UITableView, cellForRowAt indexPath:IndexPath
使用section的hearderView来实现的,十分简单,网上也有很多源码和教程,只要刷新一下dataSource然后调用就可以了。不在本次讨论的范围之内。...封装测试数据 使用FMDB(或者CoreData)从objc中国获取主issue作为父级cell,文章作为subCell,具体获取使用python和BeautifulSoup,不在本次的讨论范围之内,需要的可以查看相应的资料或者留言我...具体实现分析 TableView一些相关方法介绍 delegate里和点击有关的方法如下。...- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath...:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath 当有点击事件发生时,运行顺序为。
最近自己折腾一个小App的时候需要使用sqlite本地数据库,上Github搜了下IOS下对SQLite的三方封装有个星星很多的FMDB。...下面我就介绍下如何在Swift下使用oc的FMDB库。 1.下载 第一步自然是去下载FMDB了。...https://github.com/ccgus/fmdb 2.建立桥接 把下载下来的zip解压。打开项目文件夹,找到fmdb文件夹,把里面所有的文件选中,拖动到你的Swfit项目中。 ...在里面输入:#import "FMDB.h" 这样我们FMDB到Swift的桥接头就建好了。 3.使用 有了桥接头,我们就可以欢快的使用FMDB了。
在比较了Realm、SQLite之后,我决定在项目中依然使用SQLite数据库,并切还是使用FMDB这个第三方库来简化操作。...SQLite语句,从我自身来说,感觉其实没有那么好的记忆力,所以我又花了一点点时间来温习FMDB的常规操作,想到自己从来没有总结过数据库这方面的知识,今天就花一点点时间,对iOS端SQLite数据库做一点操作层面的总结...所以才有了应运而生的FMDB。 建表以及关闭表 使用数据库的第一件事,就是建立一个数据库。要注意的是,在iOS环境下,只有document directory 是可以进行读写的。...NSLog(@"type = %d , status = %d, name = %@, id = %@", type, status, name, id); } 至此,FMDB...的常用操作就已经讲完了,后面还会补上FMDB的多线程操作。
不安全的 model 和 cell 映射关系 随着业务深入,一个 UITableView 往往会包含多种 model,对应不同形式的 cell,那么建立 model 和 cell 的映射关系就会非常蛋疼...数据源和 UI 不绑定 当 model 变化时,我们往往需要通过当前 model 位置反推出 cell 在 UITableView 中的位置(即 indexPath),然后做相应的更新处理,反之亦然。...M80TableViewCellComponent 顾名思义,他们分别对应 UITableView,Section 和 UITableViewCell。...UITableView 联动 定义完组件后,我们只需要按照顺序将组件加入父组件中,即可完成和 UITableView 的绑定。...的所有操作都会实时反应到 UITableView 之上,包括对 cell component 的移除,刷新,插入,以及 section component 的插入,移除和刷新。
按照我一个iOS开发而言,他们俩之间交集就是 UITableView是UIScrollView 的子类,也就是说UITableView是在UIScrollView的基础上写的,在平时的应用中 UITableView...但是在Cocos中,UITableView的性能真的好低!这是我这两天使用它之后唯一的感受! ...所以,由于UITableView的性能低,在写一些列表的时候不得以使用UIScrollView + View 的方式,直接看可能觉得比较愚蠢,但事实是在使用中滑动的流畅度要比UITableView好,很尴尬...UITableView你怎么用的 ---- 其实要是只是讨论它们的使用的话真的也挺简单的,UITableView 你只需要记得一句话 -- 先注册,在使用 是的就是在说我们平常说的代理方法...第二点就是滑动范围的问题,这里有两点的确需要我们注意一下: setContentSize 和 setInnerContainerSize 这两个方法需要我们区分清楚!!
CustomizeUITableViewCell:UITableViewCell, UITableViewDataSource, UITableViewDelegate { 4 5 var tableView:UITableView...{ 9 10 super.init(style:style, reuseIdentifier: reuseIdentifier); 11 12 tableView = UITableView(...38 } 39 40 func tableView(_ tableView:UITableView, heightForRowAt indexPath:IndexPath) 41 -> CGFloat..., “巴宝莉和 Apple TV 强强 联手推出天台秀直播”] 6 var comments = [[“省略的文字”,”省略的文字”],[“省略的 文字”,”省略的文字”],[“省略的文字”, “省略的文字...56 } 57 } 58 59 func tableView(_ tableView:UITableView, heightForRowAt indexPath:IndexPath) -> CGFloat
下面是UITableView的重用机制。...UITableView里面有一个array,存放当前能用的table view cell,当有新的cell滑入屏幕时,先查看这个array中有没有能用的cell,有能用的cell就直接返回,没有就重新生成一个
) -> Int { return 1; } func tableView(_ tableView: UITableView, numberOfRowsInSection section...{ return UIView(); } func tableView(_ tableView: UITableView, viewForFooterInSection section...{ return UIView(); } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath...) -> CGFloat { return 60; } func tableView(_ tableView: UITableView, cellForRowAt indexPath:...); } } } ///取消选中的tablecell static func unselectCell(tableView: UITableView
FMDB是Objective-C上操作Sqlite的开源库,与原生的操作sqlite数据库相比,有以下几个优点: 操作方便、简单、代码优雅,易于维护; 线程安全,用着更放心,很少出现过锁死数据库文件以及...FMDatabase不是线程安全的,一个FMDatabase对象一定不能在多线程中使用,为了保证线程安全,可以在FMDB中采取下面两种方式: 每个线程都创建一个FMDatabase对象,使用之前打开连接...db close]; } db = nil; 上面的这段代码是使用FMDatabase操作数据库的一个典型的使用方式,可以看到,其实我们关注的只是使用它来对数据库进行增删改查的操作,却每次都要写这些打开和关闭的操作...中著名的Spring框架的同学都记得里面对数据库操作提供了一个Template的机制,比如JdbcTemplate、HibernateTemplate等,使用回调函数非常优雅的分离了创建连接、关闭连接和使用数据库连接操作数据库...在GitHub上的主页 或者访问@唐巧_boy 关于FMDB的这篇文章 Have Fun!
我们是使用FMDB保存好友,联系人数据,在开始使用FMDB的进行小批量数据的读写时,开始还是蛮正常的,随着数据量以及业务的复杂增加,发现了一些离奇的问题: 1、偶现联系人数据表中存在重复记录; 2、偶现读取不到数据...确实存在并发读写的情况,由于我们使用的是单例模式,所以问题1在不进行多线程互斥访问的情况下,确实是存在这个问题,所以想到的思路是将所有读写操作都放到一个队列中,执行完成了在通知UI获取数据,这个想法竟然和FMDatabaseQueue
一:介绍 FMDB是一个轻量级的数据库,用于将网络资源存储在本地。 项目中使用 ARC 还是 MRC,对使用 FMDB 都没有任何影响,FMDB 会在编译项目时自动匹配。...FMDB 将 SQLite API 进行了很友好的封装,使用起来非常方便。 下面是对FMDB的使用总结,分享给大家,另外附一份demo供大家参考。...二:FMDB优点 1.使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码 2.对比苹果自带的Core Data框架,更加轻量级和灵活 3.提供了多线程安全的数据库操作方法,有效地防止数据混乱 三:将...FMDB第三方库引入到项目 下载FMDB库文件,demo中是直接导入项目中,可直接下载demo引用库文件,也可以使用CocoaPods导入。...五:使用FMDB进行增删改查 通常对数据库的操作,我们一般称为CURD,即对表进行创建(Create)、更新(Update)、读取(Read)和删除(Delete)操作。
CGRect(x:0, y:20, width: screenRect.size.width, height:screenRect.size.height - 20) let tableView = UITableView...tableRect) tableView.dataSource = self self.view.addSubview(tableView) } func tableView(_ tableView:UITableView...,numberOfRowsInSection section:Int) -> Int{ return 20 } func tableView(_ tableView:UITableView,cellForRowAt
selectAllPersonFromPersonTable; @end DataBaseHandle.m #import "DataBaseHandle.h" #import "FMDB.h...} 配置显示: #pragma mark - Table view data source (NSInteger)numberOfSectionsInTableView:(UITableView...return 1; } (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {...return self.dataSource.count; } (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath