Fer*_*baş 28 xcode swift alamofire kingfisher xcode12
编辑: 此问题发生在 XCode 12 Beta5 之后。Xcode 不允许不同的模块定义相同的名称(可能用于公共类和协议)。Alamofire 和 Kingfisher 似乎同时定义了 SessionDelegate。我仍在努力寻找解决方案..
我正在我们的应用程序中实现 iOS 14 小部件。我已经开始使用XCode 12 Beta 2并且一切都编译得很好。当我将XCode更新到XCode 12 Beta 6 时,我遇到了以下错误:
'SessionDelegate'在不同的模块中有不同的定义;第一个区别是模块“Kingfisher.Swift”中的定义发现类结束
我还附上了错误文件的屏幕截图。
有什么方法可以编辑头文件,为 Alamofire 或 Kingfisher 的 SessionDelegate 使用不同的名称?有什么解决方法可以克服这个问题吗?
以下是我迄今为止尝试过的事情:
sam*_*sam 21
你可以试试 SWIFT_INSTALL_OBJC_HEADER = NO,它对我有用
Sim*_* I. 15
此时(Xcode 12.0 或 Xcode 12.2b2),唯一可能的解决方案是重命名 Objective-C 接口并避免冲突。这可以通过以下方式之一完成:
@objc(...)向 Swift 类添加属性,这将更新生成...-Swift.h文件中的 Obj-C 接口并避免名称冲突。// SessionDelegate.swift
@objc(KFSessionDelegate)
class SessionDelegate: NSObject { ... }
Run Code Online (Sandbox Code Playgroud)
// Kingfisher-Swift.h
@interface KFSessionDelegate : NSObject
...
@end
Run Code Online (Sandbox Code Playgroud)
此解决方案已包含在 Kingfisher 5.15.4 版本中,可以应用于任何其他库和您自己的框架。
此外,Apple 论坛上的主题:https : //developer.apple.com/forums/thread/658012
| 归档时间: |
|
| 查看次数: |
6385 次 |
| 最近记录: |