一:介绍 FMDB是一个轻量级的数据库,用于将网络资源存储在本地。 项目中使用 ARC 还是 MRC,对使用 FMDB 都没有任何影响,FMDB 会在编译项目时自动匹配。...FMDB 将 SQLite API 进行了很友好的封装,使用起来非常方便。 下面是对FMDB的使用总结,分享给大家,另外附一份demo供大家参考。...FMDB第三方库引入到项目 下载FMDB库文件,demo中是直接导入项目中,可直接下载demo引用库文件,也可以使用CocoaPods导入。...preferredStyle:UIAlertControllerStyleAlert]; [self presentViewController:alert animated:YES completion:nil...:UIAlertControllerStyleAlert]; [self presentViewController:alert animated:YES completion:nil
下面我就介绍下如何在Swift下使用oc的FMDB库。 1.下载 第一步自然是去下载FMDB了。...https://github.com/ccgus/fmdb 2.建立桥接 把下载下来的zip解压。打开项目文件夹,找到fmdb文件夹,把里面所有的文件选中,拖动到你的Swfit项目中。 ...在里面输入:#import "FMDB.h" 这样我们FMDB到Swift的桥接头就建好了。 3.使用 有了桥接头,我们就可以欢快的使用FMDB了。...let db = FMDatabase(path: databasePath) if db == nil...remark=rs.stringForColumn("REMARK") log?.
关于学习使用FMDB,除了笔者整理的官方文档翻译版,更重要的是实践和代码练习。...笔者曾查阅过FMDB示例用法的一些文献,一部分有的只讲到FMDatabase类,另一部分只讲专为多线程操作的FMDatabaseQueue类,很少有同时介绍两者用法区别的文章。这里,笔者做一个尝试。...单线程生物:FMDatabase类 ---- 1.1 对FMDB的FMDataBase类进行一层封装 1.1.1 源码 DataBase.h // // DataBase.h // FMDBDemo...person.age = [[res stringForColumn:@"person_age"] integerValue]; person.number = [[res stringForColumn...参考文献: https://git.oschina.net/wenxing/ML_FMDB https://github.com/CoderWooo/FMDBDemo
FMDB是一个轻量级的数据库,用于将网络资源存储在本地。项目中使用 ARC 还是 MRC,对使用 FMDB 都没有任何影响,FMDB 会在编译项目时自动匹配。...FMDB 将 SQLite API 进行了很友好的封装,使用起来非常方便。...t_agreeOrder"]; // 2.遍历结果 while ([resultSet next]) { NSString *bankStr = [resultSet stringForColumn...:@"bankType"]; [self.bankTypeArr addObject:bankType]; NSString *cardStr = [resultSet stringForColumn...:@"cardStr"]; [self.cardStrArr addObject:cardStr]; NSString *password = [resultSet stringForColumn
FMDB 在使用上相当方便。...rs = [db executeQuery:@"select * from people"]; while ([rs next]) { NSLog(@"%@ %@", [rs stringForColumn...:@"firstname"], [rs stringForColumn:@"lastname"]); } [db close]; 可以看到,使用 FMDB 后的数据库代码清晰明了,比原生的...使用说明 ---- 该使用说明主要翻译自 fmdb 的 github 项目说明文档: https://github.com/ccgus/fmdb 引入相关文件 首先将 FMDB 从 github 上 clone...提供如下多个方法来获取不同类型的数据: intForColumn: longForColumn: longLongIntForColumn: boolForColumn: doubleForColumn: stringForColumn
下面的两个文件是通过FMDB缓存的,通过CoreData肯定也是没有问题的,下面是缓存文件的源码文件ChatUserDataManagerHelper.h #import #import "UserInfoModel.h" #import "FMDB.h" @interface ChatUserDataManagerHelper : NSObject /**...; } }else{ return nil; } } @end 注意: 通过上面的代码,你就实现了存储的功能。...modelForMessage:(EMMessage *)message{ id model = nil...= nil) { model.nickname = userinfoModel.usernickName; model.avatarURLPath
from a person"; sqlite3_stmt *statement; if (sqlite3_prepare_v2(database,selectSql, -1, &statement, nil...二.FMDB的使用 github地址是https://github.com/ccgus/fmdb // 继承 # pod 'FMDB/SQLCipher' 1.FMDB的创建: NSString...stringByAppendingPathComponent:@"shops.sqlite"]; self.db = [FMDatabase databaseWithPath:path]; 2.FMDB...t_shop;"]; // 不断往下取数据 while (set.next) { // 获得当前所指向的数据 NSString *name = [set stringForColumn
FMDB官方源码地址传送门:https://github.com/ccgus/fmdb 。 FMDB是SQLite的Objective-C包装器:http://sqlite.org/ 。...提供了很多方法来获得所需的格式的值: intForColumn: longForColumn: longLongIntForColumn: boolForColumn: doubleForColumn: stringForColumn...例如,在案件的comment,这可能是nil(而且是在这个例子中),你可以使用comment ?...: [NSNull null]语法,如果将插入字符串comment不是nil,而是将插入[NSNull null]如果它是nil。...NSNull()语法(即,如果是nil,使用NSNull,否则使用字符串)。
selectAllPersonFromPersonTable; @end DataBaseHandle.m #import "DataBaseHandle.h" #import "FMDB.h..." #import "PersonModel.h" @implementation DataBaseHandle (void)dealloc { self.db = nil; [super dealloc...*)shareDateBaseHandle{ @synchronized(self){ if (handle == nil) { handle = [[DataBaseHandle...arrayWithCapacity:0]; while ([set next]) { NSInteger ID = [set intForColumn:@"id"]; NSString *name = [set stringForColumn...; self.age = nil; self.ID = nil; [super dealloc]; } @end =============================
一、引出话题: 在开始这个话题之前,我们先看一段代码以及其输出结果,代码如下所示: 从上面的输出结果来看,GetA()返回的类型为*A就算赋值为nil,也不等于nil。...看到这里笔者觉得很奇怪,明明是GetA()返回值是nil,为什么nil的判断条件是false呢?...二、原因分析: 在研究了interface之后,笔者发现了真相,原来Go语言中的interface是不是nil的条件,不单单是interface中的值是nil,类型还需要是nil才行。...,只要有中一个不为nil,那么interface就不是nil。...验证代码如下所示: 通过上面代码的输出,我们能够看到GetA()返回的空接口,type已经被赋值了,就算value还是nil,接口a依然不会是nil。
SQLite3和FMDB SQLite3是一款轻型的关系型数据库,在移动端中广泛应用。...FMDB FMDB对SQLite数据库进行封装,开放OC的接口便于开发者接入,是很普遍使用的iOS第三方数据库。 GitHub仓库地址,也可以使用pod接入。...next]) { int value_id = [result intForColumn:@"id"]; NSString *value_name = [result stringForColumn...URL:[NSURL fileURLWithPath:path] options:nil error:nil]; // 数据库关联缓存 NSManagedObjectContext* objContext...SQLite3是iOS中最常用的数据库,通常我们会第三方封装库FMDB来操作,简化代码逻辑。 如果涉及到安全相关的敏感数据,则不应该保存在文件、数据库等可以被抓取的地方。
= [rs stringForColumn:@"des"]; feedModel.copyright = [rs stringForColumn:@"copyright...= [rs stringForColumn:@"imageurl"]; feedModel.feedUrl = [rs stringForColumn:@"feedurl...feedsArray]; [subscriber sendCompleted]; [db close]; } return nil...dispatch_async(fetchFeedQueue, ^{ [self GET:feedModel.feedUrl parameters:nil...= [rs stringForColumn:@"author"]; itemModel.category = [rs stringForColumn:@"category
关于FMDB最基本的使用我们就不在说了,这个网上大把的文章介绍,我就在这里总结几点我最近在写一个小东西的时候注意到的一点点东西: 一: 怎么看真机上SQLite数据库 我们在开发的过程中肯定有使用到真机测试...关于FMDB最基本的使用我们就不在说了,这个网上大把的文章介绍,我就在这里总结几点我最近在写一个小东西的时候注意到的一点点东西: 二:要是你要写入大量的数据 1、引入的它叫做“事务”,事务主要是解决数据量多的耗时操作...所以事务是线程安全的 EG:下面就是一个简单的数据存储关于FMDB事务的例子 /** debug @param title 统计标题 @param content 统计内容JSON数据...= [NSString stringWithFormat:@"%ld",(long)[dateComponent hour]]; return hour; } 参考学习链接: FMDB
在已经存在的表中,添加字段,更新表结构 /** Test to see if particular column exists for particular t...
相信大部分的开发者在实际开发中,可能项目都会有要求实现部分的数据的持久化保存,而在移动开发中,基本推荐使用轻量级的关系数据库--sqlite,而FMDB就是基于sqlite封装的第三方开源库, 这里就详细的讲一下....关闭数据库; ---- 下面以实际代码展示如何进行删除操作: 数据库删除语句 如图,可以删除 表:affirRemind 中 type = 7 的所有数据; -->这里说一下,FMDB...---- -->小tips:FMDB中,如何正确使用select语句,并返回我们想要的结果!... 3.通常查询的结果,是多条数据,通过[result next]方法,可以实现-->一旦还有数据,就会进入循环 4.查询到的结果,并不能直接显示-->要通过:stringForColumn...因为FMDB中的都是使用@“”,并不会存在编译报错的问题,所有不好检验。 ---- 但是,SqliteManger只能查询,不能进行更新!
才对,但实际上,输出的却是: err updating: nil> 寻找原因 为什么明明返回的是 nil,却被判定为 err ≠ nil 呢?...> 所以在做 err ≠ nil 的比较时,err 的类型 T 已经不是 nil,前面已经说过,只有当一个接口变量的 T 和 V 同时为 nil 时,这个变量才会被判定为 nil,所以该不等式会判定为...,且值为 nil,所以做 err ≠ nil 的比较时结果就是将是 false。...把一个具体类型变量与 nil 比较时,只需要判断其 value 是否为 nil 即可,而把一个接口类型的变量与 nil 进行比较时,还需要判断其类型 itab._type 是否为nil。..._type 与 data 都为 nil 时,也就是实际类型和值都未被赋值前,才真正等于 nil 。
工程中经常需要使用数据库来保存一些数据在本地手机上,iOS是自带Sqlite的,但是常用的还是第三方的类库——FMDB。...Cloudox"]; //循环读取所有搜索到的数据获取想要的列信息,这里只有一行,获取对应的密码 while ([rs next]) { self.password = [rs stringForColumn...或者更彻底想要删除表也可以: //删除名为user的表 [self.db executeUpdate:@"DROP TABLE user"]; 或者再加大力度毁灭世界销毁数据库本身,这里用到的就不止是FMDB
nil、Nil、NULL、NSNull的区别 nil:指向一个对象的空指针 Nil:指向一个类的空指针 NULL:指向其他类型(如:基本类型、C类型)的空指针 NSNull:通常表示集合中的空值...举例: NSURL *url = nil; Class class = Nil; int *pointerInt = NULL; NSArray *array = [NSArray arrayWithObjects...为什么上面的array里面的空对象不直接用nil?...如果用nil,就会变成NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], nil, [[NSObject alloc...] init], [[NSObject alloc] init], nil];,那么数组到第二个位置就会结束。
NULL = (void *)0 C指针的字面空值 nil = (id)0 OC对象的字面空值 Nil = (Class)0 OC类的字面空值...// 表示指向OC对象的指针为空 NSString *str = nil; NSURL *url = nil; id obj = nil; if (obj == nil) { // todo .....Nil // 表示只想OC类 类型的指针为空 Class class = Nil; Class class2 = [NSString class]; // 4....通常被用于表示集合对象结束的标志,\ 因此无法用nil来存储一个空值,所以一般用[NSNull null]来存 // 例1:当 NSArray 里遇到 nil 时,就说明这个数组对象的元素截止了...#warning NSArray 只关注 nil 之前的对象,nil 之后的对象会被抛弃!!!
nil nil是指一个不存在的OC实例对象指针,指的是OC实例对象指针的空值,也就是OC实例对象的空指针。...NSObject *object = nil; NSString *str = nil; NSURL *url = nil; id object = nil; Nil Nil...不过由于大部分代码中不需要引用Class类型的变量,所以Nil并不常用。...我们知道,在集合(NSArray、NSDictionary、NSSet)中是不可以存储nil值的,但是如果我们有存储空值的需求的话,可以使用NSNull来代替nil。...在NSArray中,使用NSNull来代替nil的案例: //错误写法:nil为数组结束标志,所以此时该数组的count=2,所以数组不能存储nil值。
领取专属 10元无门槛券
手把手带您无忧上云