realm 데이터베이스 개발 (2)
데이터베이스 경로 가 져 오기
기본 데이터베이스 가 져 오기
+(RLMRealm *)getDefaultRealm {
defaultRealm = [RLMRealm defaultRealm];
return defaultRealm;
}
지정 한 사용자 정의 데이터베이스
+(RLMRealm *)getCustomRealm{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *realmPath = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.realm",realmName]];
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.fileURL = [NSURL fileURLWithPath:path];
config.objectClasses = @[KKExamRLMModel.class,KKInquiryRLMModel.class];
config.readOnly = NO;
config.schemaVersion = realmVersion;
config.migrationBlock = ^(RLMMigration *migration , uint64_t oldSchemaVersion) { // block
if (oldSchemaVersion < realmVersion) {
}
};
[RLMRealmConfiguration setDefaultConfiguration:config];
customRealm = [RLMRealm realmWithURL:[NSURL fileURLWithPath:realmPath]];
return customRealm;
}
데이터 조회
/**
@param descriptors (RLMSortDescriptor , nil )
@return
*/
+(RLMResults *)getAllObjectsWithSortedDescriptors:(NSArray *)descriptors{
RLMResults *results=nil;
RLMRealm* realm=[self getCustomRealm];
if (realm) {
results=[self allObjectsInRealm:realm];
}
if (results&&descriptors) {
results=[results sortedResultsUsingDescriptors:descriptors];
}
return results;
}
/**
( )
@param keyPath ( nil)
@return
*/
+(RLMResults *)getAllObjectSortedByKePath:(NSString *)keyPath ascending:(BOOL)ascending {
RLMResults *results=nil;
RLMRealm* realm=[self getCustomRealm];
if (realm) {
results=[self allObjectsInRealm:realm];
}
if (results&&keyPath) {
results=[results sortedResultsUsingKeyPath:keyPath ascending:ascending];
}
return results;
}
/**
( )
@param where ( , nil )
@param descriptors (RLMSortDescriptor , nil )
@return
*/
+(RLMResults *)getObjetctsWithWhere:(NSString *)where sortedDescriptors:(NSArray *)descriptors {
RLMResults *results=nil;
RLMRealm* realm=nil;
realm=[self getCustomRealm];
if (realm) {
results=[self objectsInRealm:realm where:where];
}
if (descriptors&&results) {
results=[results sortedResultsUsingDescriptors:descriptors];
}
return results;
}
/**
( )
@param where ( , nil )
@param keyPath ( nil )
@param ascending
@return
*/
+(RLMResults *)getObjetctsWithWhere:(NSString *)where sortedByKePath:(NSString *)keyPath ascending:(BOOL)ascending {
RLMResults *results=nil;
RLMRealm* realm=nil;
realm=[self getCustomRealm];
if (realm) {
results=[self objectsInRealm:realm where:where];
}
if (keyPath&&results) {
results=[results sortedResultsUsingKeyPath:keyPath ascending:YES];
}
return results;
}
/**
( )
@param predicate
@param descriptors (RLMSortDescriptor , nil )
@return
*/
+(RLMResults *)getObjectWithPredicate:(NSPredicate *)predicate sortedDescriptors:(NSArray *)descriptors {
RLMRealm* realm=nil;
RLMResults* results=nil;
realm=[self getCustomRealm];
if (realm) {
results=[self objectsInRealm:realm withPredicate:predicate];
}
if (descriptors&&results) {
results=[results sortedResultsUsingDescriptors:descriptors];
}
return results;
}
/**
( )
@param predicate
@param keyPath ( nil )
@param ascending
@return
*/
+(RLMResults *)getObjectWithPredicate:(NSPredicate *)predicate sortedByKePath:(NSString *)keyPath ascending:(BOOL)ascending {
RLMRealm* realm=nil;
RLMResults* results=nil;
realm=[self getCustomRealm];
if (realm) {
results=[self objectsInRealm:realm withPredicate:predicate];
}
if (keyPath&&results) {
results=[results sortedResultsUsingKeyPath:keyPath ascending:ascending];
}
return results;
}
데이터 의 증가 와 업데이트
/**
@param ojbect
@param block beginWriteTransaction 。
*/
+(void)addorUpdateWithObject:(RLMObject *)ojbect afterBlock:(void (^)(void))block {
RLMRealm* realm=nil;
realm=[self getCustomRealm];
if (realm) {
[realm beginWriteTransaction];
block();
[realm addOrUpdateObject:ojbect];
[realm commitWriteTransaction];
}
}
/**
@param objects
@param block beginWriteTransaction 。
*/
+(void)addorUpdateWithObjects:(id)objects afterBlock:(void (^)(void))block{
RLMRealm* realm=nil;
realm=[self getCustomRealm];
if (realm) {
[realm beginWriteTransaction];
block();
[realm addOrUpdateObjectsFromArray:objects];
[realm commitWriteTransaction];
}
}
/**
( )
@param object
*/
+(void)addSingleObject:(RLMObject *)object {
RLMRealm* realm=nil;
realm=[self getCustomRealm];
[realm transactionWithBlock:^{
[realm addObject:object];
[realm commitWriteTransaction];
}];
}
주의해 야 할 것 은 데이터 업 데 이 트 를 할 때 먼저 begin Write Transaction 을 한 다음 에 대상 의 속성 을 바 꿔 야 하기 때문에 after Block 이라는 반전 을 추가 하여 처리 해 야 합 니 다.
데이터 삭제
/**
@param object
*/
+(void)deleteObject:(RLMObject *)object {
RLMRealm* realm=nil;
realm=[self getCustomRealm];
if (realm) {
[realm transactionWithBlock:^{
[realm deleteObject:object];
[realm commitWriteTransaction];
}];
}
}
/**
realm
@param objects realm
*/
+(void)deleteObjects:(id)objects{
RLMRealm* realm=nil;
realm=[self getCustomRealm];
if (realm) {
[realm transactionWithBlock:^{
[realm deleteObjects:objects];
[realm commitWriteTransaction];
}];
}
}
/**
@param predicate
*/
+(void)deleteObjectsWithPredicate:(NSPredicate *)predicate {
RLMResults *objects = [self getObjectWithPredicate:predicate sortedDescriptors:nil];
if (objects&&objects.count>0) {
[self deleteObjects:objects];
}
}
/**
where
@param where where
*/
+(void)deleteObjectsWithWhere:(NSString *)where {
RLMResults *objects = [self getObjetctsWithWhere:where sortedDescriptors:nil];
NSLog(@"objectCount:%ld",objects.count);
if (objects&&objects.count>0) {
[self deleteObjects:objects ];
}
}
/**
*/
+(void)deleteAllObjects {
RLMRealm *realm=nil;
realm=[self getCustomRealm];
if (realm) {
[realm transactionWithBlock:^{
[realm deleteAllObjects];
[realm commitWriteTransaction];
}];
}
}
본 고 는 realm 대상 의 기본 클래스 를 패키지 하고 [realm 데이터베이스 개발 (3)]http://www.jianshu.com/p/1fe59ede20d6 ream 데이터베이스 의 구체 적 인 대상 을 추가 삭제 하고 검사 하 는 방법 으로 재 포장 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.