【问题标题】:Convert Realm list of Strings to Array of Strings in Swift在 Swift 中将 Realm 字符串列表转换为字符串数组
【发布时间】:2019-06-06 23:26:04
【问题描述】:

我刚开始使用 RealmSwift,我正在尝试在 Realm 中存储一个字符串数组。它不起作用,所以现在我使用List<String>() 作为替代方案。但是,如何将这些领域列表再次转换回[String]?如果我做不到,还有其他选择吗?

谢谢

【问题讨论】:

标签: swift xcode realm


【解决方案1】:

但是,我如何将这些领域列表再次转换回 [String]

您可以简单地将List 转换为Array,因为List 具有Sequence Support

let list = List<String>()
let array = Array(list)

【讨论】:

    【解决方案2】:

    请记住,通过转换为数组,您将失去 Realm 集合的“动态”质量(即,您将收到一个静态数组,而保留原始 List 将在源更改时提供自动更新)。但是你可以使用扩展来创建一个数组,例如:-

    extension RealmCollection
    {
      func toArray<T>() ->[T]
      {
        return self.compactMap{$0 as? T}
      }
    }
    

    然后使用:-

    let stringList = object.strings.toArray()
    

    object 是领域对象,strings 是您的字段。

    【讨论】:

    • 谢谢。我宁愿保留这份清单,但它不起作用,所以很遗憾,这就是我必须要做的。
    • 这个字符串数组是字典中的值,它不允许我拥有[Int: List&lt;String&gt;]类型的字典
    • 这听起来几乎像一个可建模类型。也许它可以表示为一个对象数组,带有一个 int id 和字符串列表。在不了解更多问题的情况下很难猜测。我建议您将此标记为已回答,并考虑提出另一个有关对此建模的问题(或继续进行)。
    • @Gargo 这是什么意思?什么不起作用?您在谈论什么“自定义类”,这与问题有什么关系?
    【解决方案3】:

    这里是详细信息。如何在领域列表模型中分配一个数组。

    jim.dogs.append(objectsIn: someDogs)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 2016-11-20
      • 1970-01-01
      • 2019-02-17
      • 2015-10-11
      • 1970-01-01
      相关资源
      最近更新 更多