【问题标题】:Swift Realm [[String]] objectSwift Realm [[String]] 对象
【发布时间】:2017-02-11 20:16:05
【问题描述】:

我是 Realm 的新手,并且已经阅读过几次文档。我需要坚持一个 [[String]] 并且还没有找到方法来做到这一点

 var tableViewArray = [[String]]()  

我看到了指向 Lists 的文档,但我未能成功实施它们。我在这里展示了我的整个过程,但只需要帮助将我的 var tableViewArray = [[String]]()in Realm 持久化

这是我的课

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 )

感谢观看

【问题讨论】:

  • 你能贴出声明你持久化的 Realm 对象的代码吗?
  • 我相信我有一个解决方案。以下是对象:
  • ˚Sorry -- 添加代码块时遇到问题 -- 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() //覆盖 var description: String { return "Car {(brand), (name) , (年)}" } }

标签: arrays swift3 realm


【解决方案1】:

我会让两个 Realm 对象被持久化,然后嵌套它们。这是一个例子:

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

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

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

我不能多说这种方法的效率,但我想它应该适合你的目的。此外,如果您有大量数据,可能会很痛苦地坚持每个单独的字符串,然后是字符串集合,字符串集合集合。

【讨论】:

  • 感谢 Faris,很好的解决方案,感谢您的帮助!
  • 这是目前推荐的方法。存储基元数组已在 Realm 的路线图上 (github.com/realm/realm-cocoa/issues/1120),因此希望这将是未来更好的体验。 :)
  • 请随意将您满意的解决方案标记为正确! @user6530825
【解决方案2】:

创建类

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])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 2016-05-28
    相关资源
    最近更新 更多