Realm学习总结

参考博客:

http://www.jianshu.com/p/096bec929f2a

http://www.cnblogs.com/ilyy/p/5648051.html

参考的博客介绍很详细,我就不写了..写了一个简单的学习的demo.

GitHub地址: https://github.com/PengSiSi/RealmDemo


 

代码如下:

 

//
//  ViewController.m
//  RealmDemo
//
//  Created by 思 彭 on 2017/7/20.
//  Copyright © 2017年 思 彭. All rights reserved.// 注意区别默认的和自己自定义realm的

#import "ViewController.h"
#import "PersonModel.h"
#import <Realm.h>
#import <RLMRealm.h>@interface ViewController () {RLMRealm *_customRealm;
}@property (weak, nonatomic) IBOutlet UITextField *nameTextField;
@property (weak, nonatomic) IBOutlet UITextField *sexTextField;
@property (weak, nonatomic) IBOutlet UITextField *ageTextField;@property (nonatomic, strong) RLMResults *locArray;
@property (nonatomic, strong) RLMNotificationToken *token;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];
//    可以使用默认的
//    _customRealm = [RLMRealm defaultRealm];//自己创建一个新的RLMRealmNSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *pathStr = paths.firstObject;// pathStr = /Users/sipeng/Library/Developer/CoreSimulator/Devices/59E51096-9523-4845-84E8-2BB5360FB50E/data/Containers/Data/Application/A20B045E-6C86-4872-99DF-A52541FB1104/Documents
NSLog(@"pathStr = %@",pathStr);_customRealm = [RLMRealm realmWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",pathStr,@"person.realm"]]];
}/**增@param sender <#sender description#>*/
- (IBAction)addAction:(id)sender {// 获取默认的 Realm 实例
//    RLMRealm *realm = [RLMRealm defaultRealm];
    PersonModel *person = [[PersonModel alloc]init];person.name = self.nameTextField.text;person.sex = self.sexTextField.text;person.age = [self.ageTextField.text integerValue];NSLog(@"name - %@ sex = %@ age = %ld",person.name, person.sex, person.age);// 数据持久化[_customRealm transactionWithBlock:^{[_customRealm addObject:person];}];// 通过事务将数据添加到 Realm 中
//    [_customRealm beginWriteTransaction];
//    [_customRealm addObject:person];
//    [_customRealm commitWriteTransaction];NSLog(@"增加成功啦");[self findAction:nil];
}/**删@param sender <#sender description#>*/
- (IBAction)deleteAction:(id)sender {// 获取默认的 Realm 实例
//    RLMRealm *realm = [RLMRealm defaultRealm];
    [_customRealm beginWriteTransaction];[_customRealm deleteAllObjects];[_customRealm commitWriteTransaction];[self findAction:nil];
}/**改@param sender <#sender description#>*/
- (IBAction)updateAction:(id)sender {for (PersonModel *person in self.locArray) {NSLog(@"name - %@ sex = %@ age = %ld",person.name, person.sex, person.age);}// 获取默认的 Realm 实例
//    RLMRealm *realm = [RLMRealm defaultRealm];PersonModel *model = self.locArray[0];[_customRealm beginWriteTransaction];model.name = @"思思棒棒哒";[_customRealm commitWriteTransaction];NSLog(@"修改成功");for (PersonModel *person in self.locArray) {NSLog(@"name - %@ sex = %@ age = %ld",person.name, person.sex, person.age);}
}/**查@param sender <#sender description#>*/
- (IBAction)findAction:(id)sender {//自己创建一个新的RLMRealmNSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *pathStr = paths.firstObject;NSLog(@"pathStr = %@",pathStr);// 查询指定的 Realm 数据库RLMRealm *personRealm = [RLMRealm realmWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",pathStr,@"person.realm"]]];// 获得一个指定的 Realm 数据库self.locArray = [PersonModel allObjectsInRealm:personRealm]; // 从该 Realm 数据库中,检索所有model// 这是默认查询默认的realm
//    self.locArray = [PersonModel allObjects];NSLog(@"self.locArray.count = %ld",self.locArray.count);
}// 创建数据库
- (void)creatDataBaseWithName:(NSString *)databaseName{NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *path = [docPath objectAtIndex:0];NSString *filePath = [path stringByAppendingPathComponent:databaseName];NSLog(@"数据库目录 = %@",filePath);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) {       // 这里是设置数据迁移的blockif (oldSchemaVersion < currentVersion) {}};[RLMRealmConfiguration setDefaultConfiguration:config];
}@end

 

转载于:https://www.cnblogs.com/pengsi/p/7210981.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

with(nolock)的用法

with(nolock)的介绍 大家在写查询时,为了性能,往往会在表后面加一个nolock,或者是with(nolock),其目的就是查询是不锁定表,从而达到提高查询速度的目的。 当同一时间有多个用户访问同一资源,并发用户中如果有用户对资源做了修改&#xff0c;此时就会对其它用户产生某些不利的影…

【PIC18单片机学习笔记】一、程序的烧录

目录编程器烧录软件烧录准备程序main.cpic18.h烧录效果Windows 10 20H2 PICkit 3 v3.10 MPLAB X IDE v5.45 PIC18F46J50 编程器 所用编程器为PICkit 3.5 按图示连接好编程器和开发板 烧录软件 所用烧录软件为PICkit 3 v3.10 初次使用需要给编程器更新固件&#xff0c…

ASIHttpRequest:创建队列、下载请求、断点续传、解压缩

ps&#xff1a;本文转载自网络&#xff1a;http://ryan.easymorse.com/?p12 感谢作者 工程完整代码下载地址&#xff1a;RequestTestDownload1 可完成&#xff1a; 下载指定链接的zip压缩文件存放在Documents目录下支持断点续传显示下载进度解压到指定目录—————————…

熊仔科技Steamduino PIC18F46J50主控板 部分原理图

目录连接情况原理图实物图Proteus 8 Frofessional v8.9 SP2 从学长那嫖的&#xff0c;本来貌似是要用来做写字机器人的&#xff0c;后面学长换成Arduino UNO了。 网上找不到资料&#xff0c;用万用表简单测了测没有丝印部分的连接情况 连接情况 RD2/PMD2/RP19 USR_LED…

【51单片机快速入门指南】3.3:USART 串口通信

目录快速使用硬知识串行口相关寄存器串行口控制寄存器SCON和PCON串行口数据缓冲寄存器SBUF从机地址控制寄存器SADEN和SADDR与串行口中断相关的寄存器IE和IPH、IP串行口工作模式串行口工作模式0&#xff1a;同步移位寄存器串行口工作模式1&#xff1a;8位UART&#xff0c;波特率…

Spring JTA应用JOTM Atomikos II JOTM

上节建立了一个简单的Java Application以及所需要的数据库和数据表&#xff0c;本节将介绍JOTM在Spring中的配置。 JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现&#xff0c;本身也是开源应用程序服务器JOnAS(Java Open Application Server)的一部分&…

从包中构建瓦片服务器

SWITCH2OSM 切换到OPENSTREETMAP 丰富的数据 OpenStreetMap数据丰富而详细&#xff0c;包含与实地人相关的大量数据 - 收集的数据。 功能包括&#xff1a; 道路&#xff0c;铁路&#xff0c;水路等餐厅&#xff0c;商店&#xff0c;车站&#xff0c;自动取款机等。步行和自行车…

【51单片机快速入门指南】4: 软件 I2C

目录硬知识I2C 介绍I2C 物理层I2C 协议层数据有效性规定起始和停止信号应答响应总线的寻址方式数据传输示例程序Soft_I2C.cSoft_I2C.h普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《普中 51 单片机开发攻略》 I2…

【51单片机快速入门指南】4.1: I2C 与 AT24C02 (EEPROM) 的跨页连续读写

目录硬知识AT24Cxx 介绍引脚排列引脚说明存储结构器件寻址器件操作待机模式存储复位写操作字节写页写应答查询读操作当前地址读随机读顺序读示例程序24C02.c24C02.h测试程序main.c实验现象通讯波形写入部分读取部分普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof…

iOS Application Security

文章分A,B,C,D 4个部分。 A) iOS Application Security 下面介绍iOS应用安全&#xff0c;如何分析和动态修改app。 1&#xff09;iOS Application security Part 1 – Setting up a mobile pentesting platform Part1介绍如何在越狱的设备上搭建用来测试iOS安全的环境。 2&…

【51单片机快速入门指南】4.2: SSD1306 OLED屏(0.96寸、1.3寸)的I2C控制详解

目录硬知识SSD1306简介I2C 接口从机地址位&#xff08;SA0&#xff09;I2C 总线写数据命令解码器晶振电路和显示时间发生器复位图形显示数据RAM (GDDRAM)命令表基本命令表部分指令详解为 BANK0 设置对比度控制&#xff08;81h&#xff09;全部显示开启&#xff08;A4h/A5h&…

使用GNS3和Cisco IOU搭建路由交换实验-安装篇

如何使用GNS3和Cisco IOU搭建路由交换实验-安装篇GNS3软件的安装建议大家从官网直接下载最新版本的GNS3&#xff0c;官网连接http://www.gns3.com/根据系统类型选择相应的版本&#xff0c;这里我选择的是Windwos系统的最新版本1.3.2下载好安装包后直接运行安装包&#xff0c;在…

1787: [Ahoi2008]Meet 紧急集合

1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1482 Solved: 652[Submit][Status][Discuss]Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 Sample Output 5 2 2 5 4 1 6 0 HINT Sou…

一步一步学Vue(四)

接上篇。上篇中给出了代码框架&#xff0c;没有具体实现&#xff0c;这一篇会对上篇定义的几个组件进行分别介绍和完善&#xff1a; 1、TodoContainer组件 TodoContainer组件&#xff0c;用来组织其它组件&#xff0c;这是react中推荐的方式&#xff0c;也是redux中高阶组件一般…

【51单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据

目录硬知识特性参数MPU6050 简介模块重要寄存器简介电源管理寄存器 1陀螺仪配置寄存器加速度传感器配置寄存器FIFO 使能寄存器陀螺仪采样率分频寄存器配置寄存器电源管理寄存器 2陀螺仪数据输出寄存器加速度传感器数据输出寄存器温度传感器示例程序MPU6050.cMPU6050.hmain.c实验…

OSM数据的获取及格式转换

转自 &#xff1a;http://blog.sina.com.cn/s/blog_72f0b6080102w39z.html 前言&#xff1a;本篇博文将介绍如何对OSM数据进行获取&#xff0c;以及格式的转换&#xff08;转为shapefile格式&#xff09;。以供OSM数据获取失败、OSM editor操作失败的朋友参考。由于并不是多么高…

再读TCP/IP网络7层协议

随着工作的深入&#xff0c;每次读这7层协议&#xff0c;每次都有不同的理解。 分层名 分层号 描述 比喻 应用层Application La…

oracle复习笔记

2019独角兽企业重金招聘Python工程师标准>>> 1.oracle相关认证&#xff1a;OCA:Oracle认证专员&#xff0c;OCP:Oracle专家认证&#xff0c;OCM:Oracle认证大师。 2.1979年,Oracle2发布。 3.Oracle数据库特点&#xff1a;支持多用户&#xff0c;大事务量的事务处理&…

【51单片机快速入门指南】4.3.1: MPU6050调用DMP库获取四元数和欧拉角

目录相关介绍DMP库相关DMP加载步骤&#xff1a;DMP设置数据写入更新DMPDMP数据包结构程序实现DMP.cDMP.h测试程序四元数实验现象欧拉角的获取普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机&#xff1a;Vofa 1.3.10 相关…

cardsui-for-android

https://github.com/Androguide/cardsui-for-android cardsui-for-android-master.zip