1.准备阶段
配置开发环境:pod比较简单
如果单元测试中要使用要记得在单元测试target中同样引入库
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'TestRealm' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
pod 'Realm'
# Pods for TestRealm
target 'TestRealmTests' do
inherit! :search_paths
pod 'Realm'
# Pods for testing
end
target 'TestRealmUITests' do
# Pods for testing
end
end
![截屏2020-09-22 下午8.24.35.png](https://upload-images.jianshu.io/upload_images/3692367-fca95f008ef452cb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
安装xcode插件包:(官网就有)
2.基本使用
2.1 引入文件头
#import
2.2 利用插件创建模型类
模型类中引入属性要注意写法
#import
@interface Student : RLMObject
@property int student_number;
@property NSString *name;
@end
// This protocol enables typed collections. i.e.:
// RLMArray
RLM_ARRAY_TYPE(Student)
.m文件中设置通过复写primaryKey方法设置主键
+ (NSString *)primaryKey{
return "student_number";
}
2.3 保存写入数据
// 可以用数组,也可以用字典,(如果用数组要保证和模型一致)
// Student *student = [[Student alloc]initWithValue:@{@"student_number":@1,@"name":@"cy"}];
Student *student = [[Student alloc]initWithValue:@[@1,@"cy"]];
RLMRealm *realm = [RLMRealm defaultRealm];
//普通写法
// [realm beginWriteTransaction];// 开始写入
// [realm addObject:student];// 存储数据
//[realm comm itWriteTransaction];//提交
// 也可以这样写
[realm transactionWithBlock:^{
[realm addObject:student];
}];
也可以用不用初始化数据模型用以下方法实现
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{
[Student createInDefaultRealmWithValue:@[@2,@"liutiesong"]];
}];
通过realm studio打开文件查看写入数据
2.4 更新数据
注:
更新数据前要先写入数据
更新的数据模型对象必须是被realm所持有的对象[图片上传中...(截屏2020-09-27 下午12.38.23.png-45f614-1601182593843-0)]
Student *student = [[Student alloc]initWithValue:@[@3,@"test"]];
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{
[realm addObject:student];
}];
[realm transactionWithBlock:^{
student.name = @"finalTest";
}];
addObject时输出
最后更新输出
2.5 查找数据并更新
RLMRealm *realm = [RLMRealm defaultRealm];
RLMResults *result = [Student objectsWhere:@"name = 'finalTest'"];
Student *student = result.firstObject;
[realm transactionWithBlock:^{
student.name = @"cy";
}];
2.6 添加/创建 并 更新/覆盖 数据
注意:
必须设置主键否则会报错(添加方法看起始步骤)
添加数据时如果主键相同,则会进行修改
添加更新数据
Student *student = [[Student alloc]initWithValue:@[@2,@"test-2"]];
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{
[realm addOrUpdateObject:student];
}];
创建更新数据
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{
[Student createOrUpdateInRealm:realm withValue:@[@2,@"test2"]];
}];
2.8 删除数据
2.8.1 查找出指定数据并删除
RLMRealm *realm = [RLMRealm defaultRealm];
RLMResults *result = [Student objectsWhere:@"name = 'test2&