【问题标题】:Cannot access Swift Framework in Objective-C无法在 Objective-C 中访问 Swift 框架
【发布时间】:2018-06-07 17:14:15
【问题描述】:
创建 Swift 框架,
Geolens.swift
当我尝试在 Objective-C 项目中访问时,无法调用 2 个方法
createuser & startSessionForUser
出现这样的错误
无法将方法标记为@objc,因为在Objective-C中无法表示参数的类型
【问题讨论】:
标签:
swift
objective-c-blocks
swift-framework
【解决方案1】:
你的问题在errorCode: Int?UserCompletionBlock。
Int是value type,而Objective C不能代表value type的Optional,只有reference types如class会。
所以你必须:
- 摆脱可选性
- 使用引用类型,例如
NSNumber 或您自己的包装器
- 完全删除此参数
【解决方案2】:
添加@objc:
@objc public func createUser(...) { ... }
@objc public func startSessionForUser(...) { ... }
【解决方案3】:
如果您希望这些方法可以在 Obj-C 中访问,请确保在所有方法的定义中添加 @objc public。就像你在课堂上的 didRegister... 和 didFailedToRegisrer... 方法中所做的那样。
快乐编码...?