2017-02-08 2 views
1

Ich möchte einfach relationale Datenbank in der iOS Realm DB erstellen. Wie kann ich Benutzer-ID verknüpfen und dort Produkt ähnlich wie die relationale Datenbank in SQL. Beispiel wie unten Bild: Example relational database imageRelationale Datenbank in Realm?

Ich weiß, dass ich 2 separate Realm Modelle erstellen können (Tabellen) zum Speichern von User-ID mit time_stamp und in der zweiten Tabelle für die Wunschliste, wo es Benutzer-ID mit jedem Wunschliste Produkte oder Benutzer-ID und eine Wunschliste , wo der Benutzer ein Array von Wishlist hat. Jetzt möchte ich alle Benutzer mit mehreren Wunschlisten speichern. Dies bedeutet, dass jedes Mal, wenn der Benutzer sich in APP eingibt, ich jede existierende Wunschliste abfragen muss, um zu sehen, ob sie für diese speziellen Wunschlisten gedacht ist. Das Problem besteht in der Wishlist-Tabelle, es hat keinen Primärschlüssel und Realm, der es nicht erlaubt, ein Modell ohne Primärschlüssel zu erstellen.

Unterstützt Realm Fremdschlüsselkonzept? und Verwendung von Composite-Key ist ziemlich kompliziert. Gibt es einen effizienteren Weg, dies zu tun?

Antwort

2

Sie können RLMArray verwenden, wobei RLMArray der Containertyp in Realm ist, der zum Definieren von Beziehungen zwischen mehreren verwendet wird. Wie in der offiziellen Realm-Dokumentation für das Ziel c erwähnt, prüfen Sie das Beispiel here. Auch über diesen Link kann es helfen RLMArray doc

+1

es für eine Eins-zu-viele oder many-to-many zu verwenden ist? –

+0

Sie können es für eins-zu-viele oder viele-zu-viele verwenden. –

2

RLMArray wird für das relationale Datenbankkonzept in Realm verwendet. Sie können wie folgt versuchen:

#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 

Lesen von Daten von Reich:

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

Sie können auch linkingObjectsProperties verwenden. –