gpt4 book ai didi

ios - 候选人的不匹配类型为 'clearly matching type'

转载 作者:行者123 更新时间:2023-12-02 10:56:44 27 4
gpt4 key购买 nike

所以这是交易:

extension APIManager: LoginAPIManagerProtocol, LoginProtocol {}

protocol LoginAPIManagerProtocol { var user: User? { get } }

class APIManager {
...
var user: User?
...
}

所有这些都在不同的文件中。 LoginAPIManagerProtocol在不同的模块中。 APIManager和扩展在同一个模块中。

使用 Swift 5,ios 13 分钟 SDK。

我想要的是通过定义的协议(protocol)将用户变量(已经在旧的遗留应用程序中定义和使用)公开给新的消费者(和要模拟的测试)。

但!:

all I get is this

所以..我现在该怎么办?尝试隔离问题。同样的错误。

最佳答案

我得到的答案:

我不确定为什么我不能按原样公开变量。 User不是协议(protocol);它只是 NSManagedObject 的子类.

我测试了暴露一个简单的bool从类里面,它工作得很好。

但最后全部曝光User object 不是很明智,因为我可能需要在依赖模块中提取它的所有依赖项,即使模块本身并不使用所有这些依赖项。

所以我:

  • 声明了一个协议(protocol)(在依赖模块中),用于从 User 公开我需要的内容

  • public protocol ModuleUser {
    var id: Int64
    }
  • 在依赖协议(protocol)中使用它:

  • public protocol LoginAPIManagerProtocol {
    ...
    var moduleUser: ModuleUser? { get }
    ...
    }
  • 和一致性:

  • extension APIManager: LoginAPIManagerProtocol, LoginProtocol {
    var moduleUser: ModuleUser? {
    return self.user
    }
    }

    现在我不需要添加 User不再反对依赖模块;这是噪音:D

    关于ios - 候选人的不匹配类型为 'clearly matching type',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61096863/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com