知乎日报第三次小结

知乎日报第三次小结

本周主要是完成知乎日报的收藏功能。
首先在完成收藏前先学习了一下数据库FMDB的用法:

首先什么是FMDB

  1. FMDB是iOS平台的SQLite数据库框架

  2. FMDB以OC的方式封装了SQLite的C语言API

FMDB的优点

  1. 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码

2.对比苹果自带的Core Data框架,更加轻量级和灵活

3.提供了多线程安全的数据库操作方法,有效地防止数据混乱

FMDB的核心类

首先FMDB有三个主要的类:

  1. FMDatabase:一个FMDatabase对象就代表一个单独的SQLite数据库用来执行SQL语句
  2. FMResultSet:使用FMDatabase执行查询后的结果集
  3. FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的

FMDB一些简单的用法

首先由于FMDB是第三方库,所以我们必须先将第三库添加到我们的项目下,然后:

  1. 首先获得数据库文件的路径:
NSString *doc=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *fileName=[doc stringByAppendingPathComponent:@"collect.sqlite"];

collect.sqlite:相当于给数据库起的名字

  1. 获得数据库:
FMDatabase *db=[FMDatabase databaseWithPath:fileName];
  1. 打开数据库之后,先创建一个表:
 BOOL executeUpdate = [dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS t_collect (id text NOT NULL);"];
                    if (executeUpdate) {
                        NSLog(@"创建表成功");
                    } else {
                        NSLog(@"创建表失败");
                    }
  1. 插入数据:
 BOOL result = [fmdb executeUpdate:@"INSERT INTO t_content (Content,ImageView) VALUES (?,?)",[self.IDArray[_index] title],[self.IDArray[_index] images]];
  1. 查找数据:
- (void)traverseData {
    FMDatabase *dataBase = [FMDatabase databaseWithPath:self.path];
    if ([dataBase open]) {
    FMResultSet *resultSet = [dataBase executeQuery:@"SELECT * FROM t_collect"];
        self.TestID = [[NSMutableArray alloc]init];
    while ([resultSet next]) {
        NSString *bankStr = [resultSet stringForColumn:@"id"];
        [self.TestID addObject:bankStr];
    }
        [dataBase close];
    } else {
        NSLog(@"打开数据库失败");
    }
}
  1. 删除数据:
FMDatabase *dataBase = [FMDatabase databaseWithPath:self.path];
        if ([dataBase open]) {
            BOOL result = [dataBase executeUpdate:@"delete from t_collect where id = ?",self->_TestID[indexPath.row]];
            if (result) {
            } else {
                NSLog(@"删除失败");
            }
            [dataBase close];
        }
        [self traverseData];
        self->_n = 0;
        while (self->_TestID.count != self->_n) {
            [self test:self->_TestID[self->_n++]];
        }
        [self.tableView reloadData];
        completionHandler (YES);

    }];
  1. 修改数据:
- (void)updateUser:(User *)user {
    if (![self.database open]) {
        NSLog(@"database does not open.");
        return;
    }
    NSString *execSql = [NSString stringWithFormat:@"UPDATE %@ SET username = '%@', age = %d, isMan = %d WHERE userId = '%@'", tableName, user.username, user.age, user.isMan ? 1 : 0, user.userId];
    BOOL result = [self.database executeUpdate:execSql];
    if (result) {
        NSLog(@"update user success");
    }

    [self.database close];
}

知乎日报第三次小结

知乎日报第三次小结

目前了解到的就是FMDB的简单使用方法,欢迎大神指教!

Original: https://blog.csdn.net/weixin_51638861/article/details/121322572
Author: Yeppppppppp
Title: 知乎日报第三次小结

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816209/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球