2017-02-08 5 views
1

Я хочу создать простую реляционную базу данных в iOS Realm DB. Как я могу связать идентификатор пользователя и есть продукт Wishlist, похожий на реляционную базу данных в SQL. Пример, как внизу изображение: Example relational database imageРеляционная база данных в Realm?

Я знаю, что я могу создать 2 отдельные модели Realm (таблицы) для хранения идентификатора пользователя с time_stamp и во второй таблице для хотелки где есть идентификатор пользователя с каждыми лист пожеланиями продуктов или идентификатором пользователя и пожеланием , где пользователь имеет массив списка пожеланий. Теперь я хочу сохранить всех пользователей с помощью нескольких списков пожеланий. Это означает, что каждый раз, когда пользователь входит в APP, я должен запрашивать каждый список желаний, чтобы узнать, предназначено ли оно для этих конкретных списков желаний. Проблема заключается в таблице Wishlist, у нее нет первичного ключа и области, не позволяющей создавать модель без первичного ключа.

Поддерживает ли Realm концепцию внешнего ключа? и использование сложного ключа затруднено. Есть ли более эффективный способ сделать это?

ответ

2

Вы можете использовать RLMArray, где RLMArray является типом контейнера в Realm, используемом для определения отношений many-many. Как упоминается в официальной документации Realm для объектного c, проверьте пример here. Также по этой ссылке это может помочь RLMArray doc

+1

это использовать один-к-многим или многие-ко-многим? –

+0

Вы можете использовать его для одного-ко-многим или многих-ко-многим. –

2

RLMArray используется для концепции реляционной базы данных в области. Вы можете попробовать так:

#import <Realm/Realm.h> 

@class User; 

// User model 
@interface User : RLMObject 
@property NSString *name; 
@property NSString *user_id; 
@property RLMArray<Watchlist *><Watchlist> *watchlist; 
@end 
RLM_ARRAY_TYPE(Dog) // define RLMArray<Dog> 

// Watchlist model 
@interface Watchlist : RLMObject 
@property NSString *id; 
@property NSInteger *activity; 
@property NSInteger *cost; 

@end 
RLM_ARRAY_TYPE(Watchlist) // define RLMArray<Person> 

// Implementations 
@implementation User 
@end // none needed 

@implementation Watchlist 
@end // none needed 

чтение данных из области:

RLMResults *watchlistDB = [Watchlist allObjects]; 
WatchlistDB = [realm_data objectAtIndex:index]; 
RLMArray *realm_array = WatchlistDB.watchlist; 
+0

Вы также можете использовать linkingObjectsProperties. –

Смежные вопросы