我有几个简单的structs
在 .swift 文件中用 swift 编写。
这些structs
非常简单,几乎只包含字符串:
struct Letter {
struct A {
static let aSome : String = "descASome"
static let aSomeMore : String = "descASomeMore"
}
struct B {
static let bNow : String = "descBNow"
static let bLater : String = "descBLater"
}
...
}
我想在包含 Objective-C 代码的项目中使用这些结构,因为我正在编写一个跨平台框架。
我读过了:Objective C - Apple 的 Swift 互操作性 https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID35其中明确指出 Swift 编写的结构不能被 ObjectiveC 使用。
排除的有(以及其他功能):
Swift 中定义的结构体
解决方案一:
我找到了一个通过使用类解决问题的解决方案:
@objc class Letter : NSObject {
@objc class A : NSObject {
static let aSome : String = "descASome"
static let aSomeMore : String = "descASomeMore"
}
@objc class B : NSObject {
static let bNow : String = "descBNow"
static let bLater : String = "descBLater"
}
...
}
这个解决方案有效,但是我必须将所有结构重写为类。它们也不像结构那样轻量(除其他外)。
此外,我觉得我正在倒退来解决问题。
Q1.除了解决方案 1 之外,还有其他方法可以在 ObjectiveC 中使用 Swift 结构吗?它不太适合我的项目/情况? (如果 rawValue 为 Int,则可以使用枚举)
Q2。有没有办法使用 #define SomeConst 进行 Objective C 访问,使用 struts 进行 Swift 访问,例如:
#if macOS // if Swift?
#endif