gpt4 book ai didi

ios - 无法快速使用 Protocol 扩展 ObjC 类

转载 作者:行者123 更新时间:2023-11-30 12:11:17 25 4
gpt4 key购买 nike

我正在尝试使用 swift 中的协议(protocol)扩展 ObjC 类以进行依赖项注入(inject),该类不属于我所有,因此我无法进行更改。对于其中一种方法,它有效,但对于其他 Xcode 总是说该类未确认协议(protocol),并建议我将该方法添加到扩展中

下面是 ObjC header 中的声明

- (BOOL) subscribeToTopic:(NSString *)topic
QoS:(AWSIoTMQTTQoS)qos
extendedCallback:(AWSIoTMQTTExtendedNewMessageBlock)callback;

这是协议(protocol)及其扩展

protocol PopAWSIoTDataManagerProtocol {

func publishString(_ data:String, onTopic:String, QoS:AWSIoTMQTTQoS) -> Bool
func subscribeToTopic(_ topic: String, qoS: AWSIoTMQTTQoS, extendedCallback: (NSObject, String, Data) -> Void) -> Bool

}

extension AWSIoTDataManager : PopAWSIoTDataManagerProtocol {

}

请注意下面的错误,它建议我将完全相同的功能添加到我已经添加到主协议(protocol)中的扩展中

enter image description here

不确定出了什么问题,因为我可以添加另一种方法。

用作引用的文章是这个https://medium.com/flawless-app-stories/the-complete-guide-to-network-unit-testing-in-swift-db8b3ee2c327

最佳答案

您必须确认协议(protocol) PopAWSIoTDataManagerProtocol,因为它是 AWSIoTDataManager 类的扩展

或者你可以试试这个

extension PopAWSIoTDataManagerProtocol where Self: AWSIoTDataManager {
...
}

关于ios - 无法快速使用 Protocol 扩展 ObjC 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46023670/

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