编辑:
XCode 12 Beta5之后,会出现此问题。 Xcode不允许不同的模块定义相同的名称(可能适用于公共(public)类和协议(protocol))。 Alamofire和Kingfisher似乎同时定义了SessionDelegate。我仍在寻找解决方案。
我正在我们的应用程序中实现iOS 14小部件。我已经开始使用 XCode 12 Beta 2 ,一切都可以编译。当我将XCode更新为 XCode 12 Beta 6 时,我遇到以下错误:
我还附有错误的文件截图。
有什么方法可以将头文件编辑为Alamofire或Kingfisher的SessionDelegate具有不同的名称?有什么解决方法可以解决此问题?
到目前为止,我尝试了以下方法:
最佳答案
此时(Xcode 12.0或Xcode 12.2b2),唯一可能的解决方案是重命名Objective-C接口(interface)并避免冲突。这可以通过以下方法之一来完成:
@objc(...)
属性,这将更新生成的...-Swift.h
文件中的Obj-C接口(interface),并避免名称冲突。 // SessionDelegate.swift
@objc(KFSessionDelegate)
class SessionDelegate: NSObject { ... }
// Kingfisher-Swift.h
@interface KFSessionDelegate : NSObject
...
@end
该解决方案已包含在Kingfisher 5.15.4 release中,并且可以应用于任何其他库和您自己的框架。另外,Apple论坛上的主题:https://developer.apple.com/forums/thread/658012
关于swift - XCode 12 : 'SessionDelegate' has different definitions in different modules,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63614048/