gpt4 book ai didi

objective-c - 有没有一种方法可以在 Objective-C 中使用 Swift 结构而不将它们创建为类?

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:44 26 4
gpt4 key购买 nike

我在 .swift 文件中用 swift 编写了几个简单的结构。这些结构非常简单,几乎只包含字符串:

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 代码的项目中使用这些结构,因为我正在编写一个跨平台框架。

我已阅读:ObjectiveC - Swift interoperability by Apple这清楚地表明 ObjectiveC 不能使用 Swift 编写的结构。排除的是(除其他功能外):

Structures defined in Swift

解决方案一:

我找到了一个 SO 解决方案,它通过使用类解决了这个问题:

@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 进行 ObjectiveC 访问并使用 stucts 进行 Swift 访问,例如:

#if macOS // if Swift?
#endif

最佳答案

到目前为止,没有。您将需要类来存储模型对象。

@objcMembers public class Car: NSObject {
public var mileage: NSNumber?
}

@objcMember 实际上将它们转换为 Objective-c 可读格式,并且可以从 Objective-C 类访问。这将使您的代码具有互操作性。

注意:确保类类型是NSObject

关于objective-c - 有没有一种方法可以在 Objective-C 中使用 Swift 结构而不将它们创建为类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44845624/

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