知乎日报第三周总结

已完成:

  1. 完善了web网页界面的视图内容
  2. 改进了点击cell后web网页的加载逻辑(由点击后一次全部加载改为点击后先只加载当前点击的一个,后面滑动到新页的时候再加载新的web网页)
  3. 学习了FMDB第三方库的使用,并实现了收藏功能
    请添加图片描述
    请添加图片描述
    请添加图片描述

收藏功能的实现思路是:当点击收藏按钮的时候,创建FMDB数据库,并将需要用到的值插入数据库,并改变收藏按钮的imageView,后续再点击时则分情况处理,若已收藏则取消收藏,改回收藏按钮的imageView,并删除数据库中当前页面的相应数据,当滑动scrollView到新页面时,遍历数据库,判断当前页面是否收藏从而加载其收藏按钮的imageView,最后当点击我的收藏cell查看已收藏内容时,先将需要用到的数据从库中取出并存到一个数组中便于后续使用,然后利用存好数据的数组加载tableView,并编写cell的点击事件,最后在加载收藏cell的Controller中利用ViewController的生命周期刷新收藏的tableView即可实现整个收藏功能。

学到的内容:

  1. FMDB第三方库的基本使用和简单机制
  2. 利用viewController的生命周期刷新视图

遇到的问题:

由于FMDB数据库插入数据时会自动将数据转换为字符串插入,所以若要插入数组,则要先将数组转换为json类型的字符串,再将该字符串插入数据库,最后取出数据时先取出json字符串,然后将该字符串转换为数组即可,但是数据想要转换为json类型的字符串需要满足以下要求,否则无法成功转换:

顶层对象必须是NSArray或者NSDictionary
所有的对象必须是NSString/NSNumber/NSArray/NSDictionary/NSNull的实例
所有NSDictionary的key必须是NSString类型
数字对象不能是非数值或无穷;

另外,想要一次向数据库中插入多种数据时,需要注意:
在第一次建库的时候就要声明多种类型,否则第一次建库成功之后再去修改创表时该库中的数据类型时由于库已存在,代码不会重复执行建库,所以就没有效果:
代码如下:

	NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
            
    NSString *fileName = [doc stringByAppendingPathComponent:@"agreeTestSecond.sqlite"];
            
            
    //FMDatabase表示一个SQLite数据库,用来执行SQL语句
    FMDatabase *dataBase = [FMDatabase databaseWithPath:fileName];
            
    if ([dataBase open]) {
          //创建表
          //在此处第一次建表时就要声明例如下方括号中的多种id类型,就可以后续存入多种类型的值
          BOOL result = [dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS t_agreeOrder (id TEXT, idSecond TEXT, idThird TEXT, idFourth TEXT);"];
                
        if (result) {
                NSLog(@"创表成功");
            } else {
                NSLog(@"创表失败!");
            }
        }

	}

另外,FMDB数据库插入值时不管是什么种类的值,都是按顺序一个一个插入,取值时也是按顺序一个一个取出,所以在需要取出值的时候就需要注意这一点。
补充:
将json字符串转换为数组时可以使用JSONKit第三方库,也可使用Apple自带的NSJSONSerialization,但是NSJSONSerialization的效率远高于JSONKit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值