一、下载
打开官网链接,找到Getting Started下面的Installation,点击链接latest release of Realm下载。
二、添加到项目
在下载的文件夹中找到 iOS/dynamic/Realm.framework 文件,把它拖拽到【项目名-General-Embedded Binaries】;找到路径【项目名-Build Settings-Framework Search Paths】,添加文件Realm.framework的路径。
三、使用例子
官网链接已经有很详细的使用方法,这里举个简单的例子方便大家上手。
新建一个Cat类继承自RLMObject:
Cat.h
#import <Realm/Realm.h>
@interface Cat : RLMObject
@property NSString *nickname;
@property NSData *picture;
@end
RLM_ARRAY_TYPE(Cat)
-----------------分割线----------------
Cat.m
#import "Cat.h"
#import <UIKit/UIKit.h>
@implementation Cat
+ (NSString *)primaryKey {
return @"nickname";
}
+ (NSDictionary *)defaultPropertyValues {
NSData *picture = UIImageJPEGRepresentation([UIImage imageNamed:@"miao"], 0.1);
return @{@"picture":picture};
}
@end
再新建一个Person类继承自RLMObject:
Person.h
#import <Realm/Realm.h>
#import "Cat.h"
@interface Person : RLMObject
@property NSString *name;
@property NSUInteger age;
@property RLMArray<Cat *><Cat> *cats;
@end
-----------------分割线----------------
Person.m
#import "Person.h"
@implementation Person
// 设置主键
+ (NSString *)primaryKey {
return @"name";
}
// 忽略属性
+ (NSArray<NSString *> *)ignoredProperties {
return @[@"age"];
}
@end
使用:
- (void)testRealm {
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
NSLog(@"默认数据库路径:%@",config.fileURL);
Cat *cat1 = [[Cat alloc] initWithValue:@{@"nickname":@"miao1"}];
Cat *cat2 = [[Cat alloc] initWithValue:@{@"nickname":@"miao2"}];
Cat *cat3 = [[Cat alloc] initWithValue:@{@"nickname":@"miao3"}];
Cat *cat4 = [[Cat alloc] initWithValue:@{@"nickname":@"miao4"}];
// 创建方法1 单个属性赋值
Person *person1 = [[Person alloc] init];
person1.name = @"XiaoMing";
[person1.cats addObject:cat1];
[person1.cats addObject:cat2];
// 创建方法2 initWithValue
Person *person2 = [[Person alloc] initWithValue:@{@"name":@"XiaoLi"}];
[person2.cats addObject:cat3];
[person2.cats addObject:cat4];
// 默认数据库
RLMRealm *realm = [RLMRealm defaultRealm];
#pragma mark ----------增/改----------
// 执行数据库操作方法1
[realm transactionWithBlock:^{
// 更改时根据主键判断
[realm addOrUpdateObject:person1];
[realm addOrUpdateObject:person2];
[realm addOrUpdateObject:cat1];
[realm addOrUpdateObject:cat2];
[realm addOrUpdateObject:cat3];
[realm addOrUpdateObject:cat4];
}];
#pragma mark ----------查询----------
// 1 根据条件查询(可选根据属性排序)
RLMResults<Person *> *persons = [[Person objectsWhere:@"name = 'XiaoLi'"] sortedResultsUsingProperty:@"name" ascending:YES];
NSLog(@"条件查询:%@",persons);
// 2 根据主键查询
Person *thePerson = [Person objectForPrimaryKey:@"XiaoMing"];
NSLog(@"主键查询:%@",thePerson);
// 3 NSPredicate查询(查询nickname以miao开头的Cat)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"nickname BEGINSWITH %@",@"miao"];
RLMResults<Cat *> *cats = [Cat objectsWithPredicate:predicate];
NSLog(@"Predicate查询:%@",cats);
// 4 指定数据库查询
RLMResults<Cat *> realmCats = [Cat objectsInRealm:oneRealm where:@"nickname = 'miao1'"];
NSLog(@"指定数据库查询:%@",realmCats);
#pragma mark ----------查询结果的使用,类似NSArray----------
// 遍历查询结果
for (Cat *cat in cats) {
NSLog(@"猫咪昵称:%@",cat.nickname);
}
// 查询结果的第一个元素
Cat *firstCat = [cats firstObject];
NSLog(@"查询到的第一个猫咪:%@",firstCat);
// 或
// Cat *firstCat = cats[0];
// 查询结果的最后一个元素
Cat *lastCat = [cats lastObject];
NSLog(@"查询到的最后一个猫咪:%@",lastCat);
#pragma mark ----------删----------
// 执行数据库操作方法2
[realm beginWriteTransaction];
// [realm deleteObject:person1];
// [realm deleteAllObjects];
[realm commitWriteTransaction];
}
四、查看数据库记录
到App Store下载Realm Browser:
运行程序后,前往默认数据库路径,如:/Users/.../Documents/default.realm(注意:打印出的路径前面多了"file://"),打开default realm,然后Allow即可看到:
Realm Browser可以删除记录和修改属性值。
Realm 数据库的基本使用方法说到这,更多功能自己去探索吧!