Realm数据库拾遗

支持数据库加密
// 产生随机密钥
NSMutableData *key = [NSMutableData dataWithLength:64];
SecRandomCopyBytes(kSecRandomDefault, key.length, (uint8_t *)key.mutableBytes);

// 打开加密文件
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.encryptionKey = key;
NSError *error = nil;
RLMRealm *realm = [RLMRealm realmWithConfiguration:config error:&error];
if (!realm) {
    // 如果密钥错误,`error` 会提示数据库不可访问
    NSLog(@"Error opening realm: %@", error);
}

Realm 支持在创建 Realm 数据库时采用64位的密钥对数据库文件进行 AES-256+SHA2 加密。这样硬盘上的数据都能都采用AES-256来进行加密和解密,并用 SHA-2 HMAC 来进行验证。每次您要获取一个 Realm 实例时,您都需要提供一次相同的密钥。
缺点:加密过的 Realm 只会带来很少的额外资源占用(通常最多只会比平常慢10%)。

通知
// 获取 Realm 通知
token = [realm addNotificationBlock:^(NSString *notification, RLMRealm * realm) {
     [myViewController updateUI];
}];

[token stop];

// 移除通知
[realm removeNotification:self.token];

Realm 实例将会在每次写入事务提交后,给其他线程上的 Realm 实例发送通知。一般控制器如果想一直持有这个通知,就需要申请一个属性,strong持有这个通知。

你可能感兴趣的:(Realm数据库拾遗)