2015-10-14 16 views
3

我剛開始領域,我有兩個對象,我認爲我已經正確創建。一個ColourCategory可以只通過一個名爲創建它們有型PaletteColour創建鏈接屬性的領域記錄

class PaletteColour: Object { 
    dynamic var name = "" 
    dynamic var category: ColorCategory? 
} 

class ColourCategory: Object { 
    dynamic var name = "" 
    let paletteColours = List<PaletteColour>() 
} 

我創造了許多種類的許多對象。 現在,我想添加顏色,並且PaletteColour的其中一個屬性是它必須具有指向類別對象名稱的鏈接。

我被困在如何使用我的類別名稱之一創建PaletteColour對象。

我開始與這個

let realm = try! Realm() 
newColour = PaletteColour() 
newColour.name = "Red" 
// This is where I am stuck 
// How do I add a category property that has a name of "Test Category" and linked to the ColourCategory object 
newColour.category = ???????????? 
realm.write { 
    realm.add(newColour) 
} 

我相信這是相當直截了當所以任何幫助,將不勝感激。

回答

1

您可以創建ColourCategory實例並將其分配給category屬性以鏈接顏色和類別對象。

// Create category object named "Test Category" 
let category = ColourCategory() 
category.name = "Test Category" 
// then, assign to `category` propety 
newColour.category = category; 

realm.write { 
    realm.add(newColour) 
} 

您還可以對palleteColours屬性使用「反向鏈接」機制。如果您使用「反向鏈接」,則不需要管理paletteColours的反向關係。

class ColourCategory: Object { 
    dynamic var name = "" 
    var paletteColours: [PaletteColour] { 
     return linkingObjects(PaletteColour.self, forProperty: "category") 
    } 
} 
+0

這似乎不工作我得到兩個PaletteColour條目但沒有關聯的ColorCategory。見[Image](http://www.screencast.com/t/P9zhLGpd) –

+0

@StewartLynch你如何檢查?如果使用調試器檢查日期,調試器將不會正確顯示Realm對象,因爲Realm對象會延遲加載。 –

+1

我剛剛在Realm Browser中打開了數據庫,所以我不確定你在問什麼。我最後評論中的那張圖片是Realm Browser中兩張表的快照。 我有點沮喪。我很喜歡使用關係型數據庫,所以我很樂意解決這個問題。我真的希望在Swift中有一個工作示例,展示如何在兩個表格關係類型數據庫中添加,修改和刪除記錄。領域網站上的示例顯示了狗和人,但沒有示例代碼,我可以找到該代碼顯示如何處理查詢,更新或修改記錄。 –