如何从Realm List加载数据

时间:2018-03-06 06:57:59

标签: swift swift3 realm swift4 realm-list

我正在消息列表中加载来自Realm数据库的消息。

// loads all messages from database
    func loadMessages() {
        messages = List<Message>(realm.objects(Message.self))
        collectionView?.reloadData()
       }

将消息定义为:

var messages = List<Message>()

我将realm实例定义为:

// realm instance
    let realm = try! Realm()

swift3工作正常但当我迁移到Swift 4时,我收到错误:

  

传递给不带参数的调用的参数。    请帮忙。   enter image description here

3 个答案:

答案 0 :(得分:1)

查看最新的Realm Swift documentation about collectionsList个对象用于表示关系。这些最适合您的代码中的Message类。对于视图控制器,保存Results对象作为成员字段可以正常工作。如果您需要对集合类型保持灵活性,或者为具有不同类型的域集合的视图控制器提供基类,则可以使用AnyRealmCollection类型。

答案 1 :(得分:0)

您可以将消息定义为数组var messages = [Message]()并按以下方式加载它们:

messages: [Message] = realm.objects(Message.self).toArray()

答案 2 :(得分:0)

如果查看Realm列表的documentation,可以看到它唯一的初始值设定项不接受任何输入参数。我没有看到将类型List的属性存储在Realm对象子类之外的任何优点,因为您可以使用本机Array实现相同的功能,或者您可以坚持自动更新{ {1}}收集。

但是,如果您确实要将Results转换为Array,可以通过创建一个空列表,然后将List个元素附加到它而不是尝试在初始化程序中添加元素。

Array