'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)
}
LiveData
和 LiveObject
是 Realm
s 类型的类型别名或扩展:
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 中的混淆错误。解决方案是删除不必要的目标成员资格。
我的项目使用 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)
}
LiveData
和 LiveObject
是 Realm
s 类型的类型别名或扩展:
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 中的混淆错误。解决方案是删除不必要的目标成员资格。