'LiveData' 要求 'User' 继承自 'LiveObject'

'LiveData' requires that 'User' inherit from 'LiveObject'

我的项目使用 Swift 5.1,我在使用一些 Swift 泛型进行单元测试时遇到困难 运行。

我有下面的代码,其中包含一些类型别名和函数:

final class User: LiveObject { //... }
func loadAllUsers(_ database: Database) -> LiveData<User> {
  database.objects(User.self)
}

数据库:

typealias Object = LiveObject
func objects<T>(_ type: T.Type) -> LiveData<T> where T: Object {
  realm.objects(type)
}

LiveDataLiveObjectRealms 类型的类型别名或扩展:

public typealias LiveData<T> = RealmSwift.Results<T> where T: LiveObject //[1. Requirement specified as 'T' : 'LiveObject' [with T = User]]
public typealias LiveList<T> = RealmSwift.List<T> where T: LiveObject

open class LiveObject: RealmSwift.Object { //... }

但是调用下面的代码时:

let users: LiveData<User> = loadAllUsers(database)

我收到此错误:'LiveData' requires that 'User' inherit from 'LiveObject'

我真的不知道发生了什么,代码编译主应用程序很好,问题只发生在我 运行 XCTest 时。上面的所有函数也在主应用程序中调用。我不明白为什么编译器在 运行 连接 XCTest 时无法检测到 User inherits LiveObject`。

错误日志:

我认为这是重载函数和 objc 的问题。对吗?

编辑 1:从函数中删除类型解决了大部分问题(但为什么呢?)。

谢谢!

我过去遇到过类似的问题,当时 Xcode 错误中引用的对象在框架和服务中都有目标成员资格。实际上,对象只需要框架中的目标成员资格,因为服务导入了框架。在一个导入另一个时同时拥有目标成员身份会创建循环引用并导致 Xcode 中的混淆错误。解决方案是删除不必要的目标成员资格。