RealmSwift。转换为Swift 4

时间:2018-01-17 13:28:53

标签: swift realm swift4

我有一项任务是将现有项目转换为Swift4(来自Swift 2.3,不要问O_o)。使用RealmSwift进行管理以解决除此问题之外的几乎所有问题:

旧代码:

class func myFunc() -> List<MyClass> {
    let realm = try! Realm()
    return List(realm.objects(MyClass).sorted("name", ascending: true))
}

获取return语句的编译器错误:

Argument passed to call that takes no arguments

当我尝试修复这样的时候,编译器是静默的,但是函数没有完成它的工作:

return List<MyClass>()

那么哪个是使用自定义对象集合初始化List的正确方法呢?请帮助!

1 个答案:

答案 0 :(得分:3)

List没有初始化程序接受RealmSwift 3.1.0中的Results实例(我不知道从什么时候开始)。 List唯一的初始值设定项不接受任何输入参数,它会创建一个空的List实例。

您可以使用唯一的初始值设定项创建一个空的List,然后调用appendResults集合的元素添加到列表中来解决此问题。

func myFunc() -> List<MyClass> {
    let realm = try! Realm()
    let list = List<MyClass>()
    list.append(objectsIn: realm.objects(MyClass.self).sorted(byKeyPath: "name", ascending: true))
    return list
}