我有一项任务是将现有项目转换为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的正确方法呢?请帮助!
答案 0 :(得分:3)
List
没有初始化程序接受RealmSwift 3.1.0中的Results
实例(我不知道从什么时候开始)。 List
唯一的初始值设定项不接受任何输入参数,它会创建一个空的List
实例。
您可以使用唯一的初始值设定项创建一个空的List
,然后调用append
将Results
集合的元素添加到列表中来解决此问题。
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
}