2017-02-11 135 views
2

我是Realm的新手,並且已經完成了幾次文檔。我需要堅持一個[字符串]]並沒有找到一種方法來做到這一點還沒有Swift Realm [[String]]對象

var tableViewArray = [[String]]() 

我看到的文檔指向清單,但我一直不成功,在執行這些。我展示了我的整個過程在這裏,但只是需要幫助堅持我的變種tableViewArray = [[String]]()在領域

這是我的課

class TableViewArrays { 

var tableViewArray = [[String]]() // populates the Main Tableview 

/// add picker selection to tableview array 
func appendTableViewArray(title: String, detail: String, icon: String) { 

     var newRow = [String]() 
     newRow.append(title) 
     newRow.append(detail) 
     newRow.append(icon) 
     tableViewArray.append(newRow) 
} 

在視圖控制器我實例化對象

var tableViewArrays = TableViewArrays() 

然後調用用於填充對象的類函數

var tableViewArrays.appendTableViewArray(title: String, detail: String, icon: String) 

謝謝爲了看看

+0

你可以發佈你在哪裏持久化領域對象中聲明的代碼? –

+0

我相信我有一個解決方案。下面是對象: – user6530825

+0

對不起 - 有麻煩添加代碼塊 - 類TableViewRow:對象{ 動態無功圖標=「」 動態無功標題=「」 動態無功詳細=「」 倍率變種描述:字符串{return「TableViewRow {\(icon),\(title),\(detail)}」} } class EventTableView:Object {rows = List () // override var description:String {return 「Car {\(brand),\(name),\(year)}」} } – user6530825

回答

2

我會讓兩個Realm對象被保持,然後嵌套它們。這裏有一個例子:

class RealmString: Object { 
    dynamic var value = "" 
} 

class RealmStringArray: Object { 
    let strings = List<RealmString>() 
} 

class TableViewArray{ 
    let stringArrays = List<RealmStringArray>() 
} 

我不能說這個方法的效率,但我想它應該爲你的目的工作。此外,如果您有大量數據,則堅持每個單獨的字符串,然後字符串集合(字符串集合集合)可能會很痛苦。

+1

感謝Faris,很好的解決方案,我很感謝您的幫助! – user6530825

+0

這是現在推薦的方法。存儲基元陣列在Realm的路線圖上(https://github.com/realm/realm-cocoa/issues/1120),所以希望這將是未來更好的體驗。 :) – TiM

+0

隨意標記一個你認爲正確的解決方案! @ user6530825 –

1

創建類

class TableViewRow: Object { 
    dynamic var icon = "" 
    dynamic var title = "" 
    dynamic var detail = "" 

    override var description: String { 
    return "TableViewRow {\(icon), \(title), \(detail)}" } 
} 

class EventTableView: Object { 
    let rows = List<TableViewRow>() 
} 

然後實例化對象和追加

let defaultTableview = EventTableView() 
let rowOne = TableViewRow() 

rowOne.icon = "man icon" ; rowOne.title = "War Hans D.O.P." ; rowOne.detail = "Camera Order Nike 2/11/17" 

defaultTableview.rows.append(objectsIn: [rowOne])