美文网首页
WCDB 使用

WCDB 使用

作者: 蓝天白云_Sam | 来源:发表于2021-06-16 11:48 被阅读0次

1. 安装:使用Cocoapods安装

pod 'WCDB'

2. 使用

2.1 实现 WCTTableCoding 协议

  • 类的定义:类的定义跟普通类的定义相似
//Message.h
@interface Message : NSObject

@property int localID;
@property(retain) NSString *content;
@property(retain) NSDate *createTime;
@property(retain) NSDate *modifiedTime;
@property(assign) int unused; //You can only define the properties you need

@end
  • 实现WCTTableCoding协议
  1. 在category里遵循WCTTableCoding协议,并定义数据库相关字段
//Message+WCTTableCoding.h
#import "Message.h"
#import <WCDB/WCDB.h>

@interface Message (WCTTableCoding) <WCTTableCoding>

WCDB_PROPERTY(localID)
WCDB_PROPERTY(content)
WCDB_PROPERTY(createTime)
WCDB_PROPERTY(modifiedTime)

@end
  1. 在实现文件里实现相关字段
//Message.mm
#import "Message.h"
@implementation Message

WCDB_IMPLEMENTATION(Message)
WCDB_SYNTHESIZE(Message, localID)
WCDB_SYNTHESIZE(Message, content)
WCDB_SYNTHESIZE(Message, createTime)
WCDB_SYNTHESIZE(Message, modifiedTime)

WCDB_PRIMARY(Message, localID)

WCDB_INDEX(Message, "_index", createTime)

@end

相关宏定义:

  • 定义该类遵循WCTTableCoding协议。
  • 使用WCDB_PROPERTY宏在头文件声明需要绑定到数据库表的字段。
  • 使用WCDB_IMPLEMENTATIO宏在类文件定义绑定到数据库表的类。
  • 使用WCDB_SYNTHESIZE宏在类文件定义需要绑定到数据库表的字段。

除此之外,WCDB还提供了许多可选的宏,用于定义数据库索引、约束等,如:
WCDB_PRIMARY 用于定义主键
WCDB_INDEX 用于定义索引
WCDB_UNIQUE 用于定义唯一约束
WCDB_NOT_NULL 用于定义非空约束

2.2 使用:创建表及增删改查(CRUD)

2.2.1 创建表和索引

定义完成后,只需要调用createTableAndIndexesOfName:withClass:接口,即可创建表和索引。

WCTDatabase *database = [[WCTDatabase alloc] initWithPath:path];
/*
 CREATE TABLE messsage (localID INTEGER PRIMARY KEY,
                        content TEXT,
                        createTime BLOB,
                        modifiedTime BLOB)
 */
BOOL result = [database createTableAndIndexesOfName:@"message"
                                          withClass:Message.class];

2.2.2 插入

  • 插入
//插入
Message *message = [[Message alloc] init];
message.localID = 1;
message.content = @"Hello, WCDB!";
message.createTime = [NSDate date];
message.modifiedTime = [NSDate date];
/*
 INSERT INTO message(localID, content, createTime, modifiedTime) 
 VALUES(1, "Hello, WCDB!", 1496396165, 1496396165);
 */
BOOL result = [database insertObject:message
                                into:@"message"];
  • 插入或者替换
//插入
Message *message = [[Message alloc] init];
message.localID = 1;
message.content = @"Hello, WCDB!";
message.createTime = [NSDate date];
message.modifiedTime = [NSDate date];
/*
 INSERT INTO message(localID, content, createTime, modifiedTime) 
 VALUES(1, "Hello, WCDB!", 1496396165, 1496396165);
 */
BOOL result = [database insertOrReplaceObject:message
                                into:@"message"];

2.2.2 删除

//删除
//DELETE FROM message WHERE localID>0;
BOOL result = [database deleteObjectsFromTable:@"message"
                                         where:Message.localID > 0];

2.2.3 修改(更新)

//修改
//UPDATE message SET content="Hello, Wechat!";
Message *message = [[Message alloc] init];
message.content = @"Hello, Wechat!";
BOOL result = [database updateRowsInTable:@"message"
                             onProperties:Message.content
                               withObject:message];

2.2.4 查询

//查询
//SELECT * FROM message ORDER BY localID
NSArray<Message *> *message = [database getObjectsOfClass:Message.class
                                                fromTable:@"message"
                                                  orderBy:Message.localID.order()];

更多关于增删改查的接口,请参考:基础类、CRUD与Transaction

2.2.5 事务

BOOL commited = [database runTransaction:^BOOL {
    [database insertObject:message into:@"message"];
    return YES; //return YES to commit transaction and return NO to rollback transaction.
}];

相关文章

  • IOS数据存储 之WCDB (二)WCDB.swift使用篇

    @[TOC](IOS数据存储 之WCDB (二)WCDB.swift使用篇) 上一篇:IOS数据存储 之WCDB ...

  • iOS WCDB 使用

    iOS WCDB使用 准备 简介 WCDB 是基于SQLCipher,而SQLCipher 又是基于SQLite....

  • WCDB 使用

    1. 安装:使用Cocoapods安装 2. 使用 2.1 实现 WCTTableCoding 协议 类的定义:类...

  • WCDB使用

    Git地址:https://github.com/Tencent/wcdb/wiki/ORM%E4%BD%BF%E...

  • WCDB使用

    WCDB是微信的一个开源数据库框架。 相对于FMDB来说,WCDB更快,而且用了ORM数据-模型绑定,使用更方便,...

  • 使用WCDB对数据存储进行优化

    使用WCDB对数据存储进行优化

  • WCDB使用文档

    使用简介iOS 官方使用教程从FMDB迁移到WCDB 基本特性 易用,WCDB支持一句代码即可将数据取出并组合为o...

  • 从SQLCipher到WCDB

    为什么要使用WCDB替换已有的SQLCipher? WCDB实际上是基于SQLCipher上设计的,当初我们项目接...

  • Swift WCDB 使用

    pod 'WCDB.swift'import WCDBSwift创建一个model,遵循 TableCodable...

  • WCDB的基本使用

    前言 WCDB是微信移动端团队开源的移动端数据库组件,提供了一个高效、完整、易用的移动端存储方案。第一次应用到WC...

网友评论

      本文标题:WCDB 使用

      本文链接:https://www.haomeiwen.com/subject/zipxyltx.html