我正在消息列表中加载来自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
时,我收到错误:
答案 0 :(得分:1)
查看最新的Realm Swift documentation about collections。 List
个对象用于表示关系。这些最适合您的代码中的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