候选人的类型不匹配 'clearly matching type'
Candidate has non-matching type of 'clearly matching type'
所以这是交易:
extension APIManager: LoginAPIManagerProtocol, LoginProtocol {}
protocol LoginAPIManagerProtocol { var user: User? { get } }
class APIManager {
...
var user: User?
...
}
所有这些都在不同的文件中。
LoginAPIManagerProtocol
在不同的模块中。
APIManager
和扩展在同一个模块中。
使用 Swift 5,ios 13 分钟 SDK。
我想要的是通过定义的协议将用户变量(已经在旧的遗留应用程序中定义和使用)公开给新的消费者(和要模拟的测试)。
但是!:
all I get is this
所以..我现在该怎么办?尝试隔离问题。同样的错误。
我得到的答案:
我不确定为什么不能按原样公开变量。 User
不是协议;它只是 NSManagedObject
.
的子class
我测试了从 class 公开一个简单的 bool
,它工作得很好。
但最终公开整个 User
对象并不是很明智,因为我可能需要将其所有依赖项拉到依赖模块中,即使模块本身并不使用所有依赖项。
所以我:
- 声明了一个协议(在依赖模块中)用于从
User
公开我需要的东西
public protocol ModuleUser {
var id: Int64
}
- 在依赖协议中使用:
public protocol LoginAPIManagerProtocol {
...
var moduleUser: ModuleUser? { get }
...
}
- 和一致性:
extension APIManager: LoginAPIManagerProtocol, LoginProtocol {
var moduleUser: ModuleUser? {
return self.user
}
}
现在我不再需要将 User
对象添加到依赖模块;这是噪音 :D
所以这是交易:
extension APIManager: LoginAPIManagerProtocol, LoginProtocol {}
protocol LoginAPIManagerProtocol { var user: User? { get } }
class APIManager {
...
var user: User?
...
}
所有这些都在不同的文件中。
LoginAPIManagerProtocol
在不同的模块中。
APIManager
和扩展在同一个模块中。
使用 Swift 5,ios 13 分钟 SDK。
我想要的是通过定义的协议将用户变量(已经在旧的遗留应用程序中定义和使用)公开给新的消费者(和要模拟的测试)。
但是!:
all I get is this
所以..我现在该怎么办?尝试隔离问题。同样的错误。
我得到的答案:
我不确定为什么不能按原样公开变量。 User
不是协议;它只是 NSManagedObject
.
我测试了从 class 公开一个简单的 bool
,它工作得很好。
但最终公开整个 User
对象并不是很明智,因为我可能需要将其所有依赖项拉到依赖模块中,即使模块本身并不使用所有依赖项。
所以我:
- 声明了一个协议(在依赖模块中)用于从
User
公开我需要的东西
public protocol ModuleUser {
var id: Int64
}
- 在依赖协议中使用:
public protocol LoginAPIManagerProtocol {
...
var moduleUser: ModuleUser? { get }
...
}
- 和一致性:
extension APIManager: LoginAPIManagerProtocol, LoginProtocol {
var moduleUser: ModuleUser? {
return self.user
}
}
现在我不再需要将 User
对象添加到依赖模块;这是噪音 :D