参考博客:
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