Realm移动应用数据库使用-IOS
来源:互联网 发布:淘宝授权书可以造假吗 编辑:程序博客网 时间:2024/05/29 14:13
一、 目前APP数据存储方式
二、Realm介绍
三、IOS应用集成Realm
1、集成环境Android Studio >= 1.5.1
JDK version >=7.
Android API >=9(Android 2.3)
2、文件配置 在project的build中加入依赖
dependencies {classpath "io.realm:realm-gradle-plugin:2.1.2"}
在module的build添加
apply plugin: 'realm-android'
3、初始化- (void)creatDataBaseWithName:(NSString *)databaseName{ NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [docPath objectAtIndex:0]; NSString *filePath = [path stringByAppendingPathComponent:databaseName]; RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration]; config.fileURL = [NSURL URLWithString:filePath]; config.objectClasses = @[MyClass.class, MyOtherClass.class]; config.readOnly = NO; int currentVersion = 1.0; config.schemaVersion = currentVersion; config.migrationBlock = ^(RLMMigration *migration , uint64_t oldSchemaVersion) { if (oldSchemaVersion < currentVersion) {}// block回调处理数据迁移 }; [RLMRealmConfiguration setDefaultConfiguration:config];}
4、数据模型#import <Realm/Realm.h>@interface SlideCat : RLMObject@property NSInteger index;//索引,位置@property NSString *uv;//纹理贴图@property NSString *sound;//音效RLM_ARRAY_TYPE(SlideCat) //@end@implementation SlideCat+ (NSString *)primaryKey { return @"index";// 主键}+ (NSDictionary *)defaultPropertyValues{ return @{@"uv":@"blackcat.png" };//设置属性默认值}+ (NSArray *)requiredProperties { return @[@"uv",@"sound"];//避免uv、sound为nil会抛出异常}+ (NSArray *)indexedProperties { return @[@"index"];//设置索引,可以加快检索的速度}@end
/***增*///(1)事务操作SlideCat *cat= [[SlideCat alloc] init];cat.index = 1;cat.uv= @"blackcat.png";cat.sound = @"angry.mp4";//事务操作[realm beginWriteTransaction];[realm addObject:cat];[realm commitWriteTransaction];//(2)Realm 采用了 MVCC 设计架构,读取操作并不会因为写入事务正在进行而受到影响。可采用批量化的写入事务,若多个线程同时执行写入操作,则每个线程单独执行事务操作。SlideCat *cat= [[SlideCat alloc] init];cat.index = 1;cat.uv= @"blackcat.png";cat.sound = @"angry.mp4";dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ RLMRealm *realm = [RLMRealm defaultRealm]; [realm transactionWithBlock:^{ [realm addObject: cat]; }]; });
/***查*///(1)查询和属性访问//从默认数据库查询所有的SlideCatRLMResults<SlideCat *> *cats= [SlideCat allObjects];// 使用 NSPredicate 查询所有生气的黑猫NSPredicate *pred = [NSPredicate predicateWithFormat:@"uv= %@ AND sound BEGINSWITH %@",@"blackcat.png",@"angry"];RLMResults *results = [SlideCat objectsWithPredicate:pred];// 根据位置索引,排序所有生气的黑猫RLMResults<SlideCat *> *sortedCats = [[SlideCat objectsWhere:@"uv= 'blackcat' AND sound BEGINSWITH 'angry'"] sortedResultsUsingProperty:@"index" ascending:YES];//(2)链式查询:Realm 查询引擎一个特性就是它能够通过非常小的事务开销来执行链式查询(chain queries)RLMResults<SlideCat *> *cats= [SlideCat objectsWhere:@"uv= blackcat.png"];RLMResults<SlideCat *> *catResults= [cats objectsWhere:@"sound BEGINSWITH 'angry'"];
/***删*/SlideCat *cat= [[SlideCat alloc] init];cat.index = 1;cat.uv= @"blackcat.png";cat.sound = @"angry.mp4";[realm beginWriteTransaction];// 删除单条记录[realm deleteObject:cat];// 删除多条记录[realm deleteObjects:catResult];// 删除所有记录[realm deleteAllObjects];[realm commitWriteTransaction];
/***改*///(1)当没有主键的情况下,需要先查询,再修改数据。NSPredicate *pred = [NSPredicate predicateWithFormat:@"index= %d",1];[realm addOrUpdateObject:cat];//(2)当有主键的情况下,有以下几个非常好用的APISlideCat *cat= [[SlideCat alloc] init];cat.index = 1;cat.uv= @"blackcat.png";cat.sound = @"smile.mp4";[realm addOrUpdateObject:cat];[SlideCat createOrUpdateInRealm:realm withValue:@{@"index": @1, @"sound": @"smile.mp4",@"uv":@"blackcat.png"}];
阅读全文
0 0
- Realm移动应用数据库使用-IOS
- Realm移动应用数据库使用-Android
- IOS-Realm 数据库在移动端的使用
- IOS Realm数据库的使用
- Realm 数据库的使用(iOS &Android)
- iOS开发-Realm数据库
- iOS开发-Realm数据库
- iOS开发-Realm数据库
- iOS开发-Realm数据库
- Realm-在iOS中应用-全新的数据库思维模式
- Realm数据库使用
- 数据库Realm的使用
- Android Realm数据库使用
- Realm数据库框架使用
- Realm数据库使用总结
- Android应用之Realm数据库
- 专注于移动开发的数据库Realm
- 移动端专用数据库Realm介绍
- PHP连接MYSQL经常用到的mysqli函数
- 2017.10.17 LeetCode 数论小知识
- 2018招商银行深圳分行面试经历
- 在ubuntu下安装Sublime text 3及添加其相关的软件源
- Material Design之 AppbarLayout 开发实践总结
- Realm移动应用数据库使用-IOS
- Java 5 并发编程--Lock详解
- 安卓Handler机制,思维图
- Android ViewGroup事件分发dipatchTouchEvent源码注释分析
- 【opc】入门探索
- class-dump安装方法 20171017
- 巨头抢食互金蛋糕,消费金融ABS暴增千亿
- Low Polygon风格的渲染
- 华工计算机学子的一些感想