iOS Realm DB에 간단한 관계형 데이터베이스 (다른 DB에있는 것과 같은) 모델을 만들었습니다. 다른 세부 정보와 위시리스트가 포함 된 2 개의 별도 Realm 모델 (테이블) 사용자 ID를 만들었습니다. 사용자는 RLMArray
. 위시리스트에는 이전 질문 에서와 같이 하나 이상의 제품이 포함될 수 있습니다 . 이 모델에서 사용자 ID가있는 테이블은 일정하지만 위시리스트 테이블은 RLMArray
업데이트하거나 삭제할 수 있습니다. RLMArray
영역을 사용하여 업데이트 할 수 addOrUpdateObject
있지만 요소를 RLMArray
어떻게 삭제할 수 있습니까? 관계형 데이터베이스 모델의 예는 다음과 같습니다.
코드는 다음과 유사합니다.
#import <Realm/Realm.h>
@class User;
// User model
@interface User : RLMObject
@property NSString *name;
@property NSString *user_id;
@property RLMArray< Wishlist *>< Wishlist > *wishlist;
@end
// Wishlist model
@interface Wishlist : RLMObject
@property NSString *id;
@property NSInteger *activity;
@property NSInteger *cost;
@end
RLM_ARRAY_TYPE(Wishlist) // define RLMArray<Person>
// Implementations
@implementation User
@end // none needed
@implementation Wishlist
@end // none needed
영역에서 데이터 읽기 :
RLMResults *watchlistDB = [Watchlist allObjects];
WatchlistDB = [realm_data objectAtIndex:index];
RLMArray *realm_array = WatchlistDB.watchlist;
새 활동 삽입 :
User *user_realm = [[MyWatchlistDB alloc] init];
user_realm.user_id = _user_id;
user_realm.name = _user_name;
for (NSDictionary *tempDict in activity)
{
Wishlist *wishlist_realm = [[Wishlist alloc] init];
newWatchlist.id =[tempDict objectForKey:@"id"];
newWatchlist.activity =[tempDict objectForKey:@"activity"];
newWatchlist.cost = [tempDict objectForKey:@"cost"];
[user_realm.wishlist addObject:newWatchlist];
}
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm addOrUpdateObject:user_realm];
[realm commitWriteTransaction];
RLMArray에서 요소를 어떻게 삭제할 수 있습니까? 사용자가 일부 활동을 삭제할 때 위시리스트를 업데이트하려면?
영역에서 데이터를 삭제하는 방법 중 일부. 사용 RLMArray
하고 addOrUpdateObject
.
RLMArray<Wishlist> *wishlist_array = Userdb_realm.wishlist; // reading existing data
User *Userdb = [[User alloc] init];
Userdb.user_id = _Userdb_id;
Userdb.name = _Userdb_name;
for (NSString *temp in delArray)
{
for (int i = 0; i<[wishlist_array count]; i++) {
Wishlist *wishlistTodel = wishlist_array[i];
if ([wishlistTodel.user_id isEqualToString:temp]) {
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[wishlist_array removeObjectAtIndex:i];
[realm commitWriteTransaction];
break;
}
}
}
Userdb.wishlist = wishlist_array;
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm addOrUpdateObject:Userdb];
[realm commitWriteTransaction];
누구든지 더 나은 솔루션이 있다면 여기에서 대답 할 수 있습니다. 모든 응답에 감사드립니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다