반응형
Realm
RLMArray
User 가 있고,
User 가 사용할 수 있는 언어가 여러개 저장될 수 있는 구조가 있다면,
아래와 같이 사용할 수 있습니다.
기존에 있던 User Interface 입니다.
// Define your models
@interface User : RLMObject
@property NSString *id;
@property NSString *name;
@property NSInteger age;
@end
@implementation User
+ (NSString *)primaryKey {
return @"id";
}
@end
여기에 Langs property 를 추가하고 여러개의 Language Class 를 배열로 넣고 싶다면,
Language Interface 를 다음과 같이 만듦니다.
Property는 더 추가해도 되겠죠.
// Languages
@interface Langs : RLMObject
@property NSString *lang;
@end
//RLM_ARRAY_TYPE(Langs) // deprecated
RLM_COLLECTION_TYPE(Langs)
@implementation Langs
@end
RLM_ARRAY_TYPE 은 Deprecated 되었습니다.
그리고 User 의 property 로 추가합니다.
값 저장 예제
RLMRealm *realm = [RLMRealm defaultRealm];
User *userInit = [[User alloc] initWithValue:@{@"id": [[NSUUID UUID] UUIDString], @"name": @"bryan", @"age": @20}];
NSArray *langArr = [NSArray arrayWithObjects:@"KOR", @"ENG", @"JP", nil];
// int count = [langArr count];
for(NSString *lang in langArr){
Langs *langs = [[Langs alloc] initWithValue:@{@"lang": lang}];
[userInit.langs addObject:langs];
}
[realm transactionWithBlock:^{
[realm addObject:userInit];
}];
조회 예제
RLMResults<User *> *allUsers = [User allObjects];
for(User *user in allUsers){
for(Langs *lang in user.langs){
NSLog(@"%@", lang.lang);
}
}
728x90
반응형
'IOS (Swift, Objective-c)' 카테고리의 다른 글
[IOS] [Objective-C] 10진수를 16진수 문자열로 바꾸기 (0) | 2022.02.06 |
---|---|
[IOS] Objective-C Random String, UUID (0) | 2022.02.06 |
[Objective-C] 기초부터 앱개발까지 (별도 클래스, 함수 파일만들기) (0) | 2022.02.05 |
[IOS] Objective-C 에서 Realm 사용하기 (0) | 2022.02.05 |
[IOS] CocoaPod 설치. 프로젝트 설정하기 (0) | 2022.02.05 |
댓글