2016-03-23 14 views
2

Ich bin neu in der iOS-Entwicklung und verwende derzeit Realm als Datenbank. Meine erste Tabellenansicht Restaurantobjekt und zweite Tabelle zeigen Kundenobjekte an. Wie kann ich diese zwei Objekte verbinden ?. Bedeutet, wenn ich auf jedes Restaurant klicke, wird es verschiedene Kunden anzeigen.So verbinden Sie zwei Realm-Objekte

class Restaurant: Object { 
    dynamic var restname: String = "" 
    dynamic var date: String = "" 
} 

class Customer: Object { 
    dynamic var id = 0 
    dynamic var name: String = "" 
    dynamic var price: Float = 0.0 
    dynamic var drinks: Float = 0.0 

    override static func primaryKey() -> String? { 
     return "id" 
    } 
} 

Antwort

0

Wenn ich verstehe, in Restaurant Klasse formulieren:

dynamic var _customer = Optional(Customer()) 

oder in Customer-Klasse setzen Sie diese Zeile:

dynamic var _restaurant = Optional(Restaurant()) 

HINWEIS: Name der Variablen mit niedrigem Strich, sein kann irgendein Name, meine Gewohnheit ist, niedrigeren Strich zu setzen

0

Sie machen Verweisungen auf Ihre Modelle wie so

class Customer: Object { 
    dynamic var restaurant: Restaurant? 
} 

Sie haben auch die Möglichkeit, umgekehrte Beziehung zu erhalten mit LinkingObjects(fromType:, property:)

Sie in Ihren anderen Modell

class Restaurant: Object { 
    let customers = LinkingObjects(fromType: Customer.self, property: "restaurant") 
} 

Auf diese Weise schreiben können Sie Beziehungen nicht duplizieren.

+0

Ich habe versucht, Ihren Code hinzuzufügen, um eine inverse Beziehung zwischen den Objekten zu definieren. Allerdings bekomme ich den Fehler 'Kann Initialisierer für Typ 'LinkingObjects ' mit einer Argumentliste des Typs 'nicht aufrufen (fromType: Users.Type, Eigenschaft: String)'' Bitte korrigieren Sie Ihre Antwort. – Jobs

+0

@Jobs Ich habe eine Änderung vorgenommen, um den aktuellen API-Empfehlungen zu entsprechen. Das funktioniert sicher :) Ich habe es getestet. – Crazyrems