ios realm 文件_iOS开发之realm本地存储

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&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值