2017-01-21 5 views
1

私はレルムで新しく、簡単なアプリケーションを作成しようとしています。私は現在、このモデルで働いている:レルムスウィフト - 既存のネストされたオブジェクトを複製する

class Item: Object{ 
    dynamic var title = "" 
    dynamic var created = Date(timeIntervalSince1970: 1) 
    dynamic var price = 0.0 
    dynamic var image = "" 
    dynamic var store: Store? 
} 

class Store: Object{ 
    dynamic var name = "" 
} 

私は私の新しい項目を保存するとき、私はこれを行う:

@IBAction func saveItem(){ 
     /*some validations*/ 

     let item = Item() 
     item.title = name 
     item.price = 20.00 
     item.created = Date() 

     if let store = chosenStore{ 
      item.store = store 
     } 

     do{ 
      try realm.write { 
       realm.add(item) 
      } 
     }catch{ 
      print(error.localizedDescription) 
     } 
    } 

問題は、私はすでに5つの店舗を追加したことですが、私は項目とを保存するときストアを選択すると、新しいストアが1つ作成されます。新しいストアを作成せずに特定のストアへの参照を保持するにはどうすればよいですか?

答えて

0

お店のユニークなプロパティがあります。たとえば、UUIDです。

dynamic var uuid = UUID().uuidString 

オーバーライドあなたのストアモデルのprimaryKey機能、および以前に作成した独自のプロパティを返します。

override class func primaryKey() -> String? { 
    return "uuid" 
} 

トリックを行う必要があります。

+0

ありがとうございました!プライマリキーを追加してから、保存する前にそのストアをクエリしてください。新しい複製ストアはありません。 –

関連する問題