gpt4 book ai didi

objective-c - 是否可以在 Obj-C 中使用 Swift 的枚举?

转载 作者:IT老高 更新时间:2023-10-28 12:19:13 25 4
gpt4 key购买 nike

我正在尝试将我的一些 Obj-C 类转换为 Swift。其他一些 Obj-C 类仍在该转换后的类中使用枚举。我在 Pre-Release Docs 中搜索并找不到它,或者我错过了它。有没有办法在 Obj-C 类中使用 Swift 枚举?或者这个问题的文档的链接?

这就是我在旧的 Obj-C 代码和新的 Swift 代码中声明我的枚举的方式。

我的旧 Obj-C 代码:

typedef NS_ENUM(NSInteger, SomeEnum)
{
SomeEnumA,
SomeEnumB,
SomeEnumC
};

@interface SomeClass : NSObject

...

@end

我的新 Swift 代码:

enum SomeEnum: NSInteger
{
case A
case B
case C
};

class SomeClass: NSObject
{
...
}

更新:来自答案。它不能在 Swift 1.2 之前的版本中完成。但据这位官方Swift Blog .在与 XCode 6.3 一起发布的 Swift 1.2 中,您可以通过在 enum 之前添加 @objc 来在 Objective-C 中使用 Swift Enum

最佳答案

从 Swift 版本 1.2 (Xcode 6.3) 开始,您可以。只需在枚举声明前加上 @objc

@objc enum Bear: Int {
case Black, Grizzly, Polar
}

无耻地取自Swift Blog

Note: This would not work for String enums or enums with associated values. Your enum will need to be Int-bound


在 Objective-C 中,这看起来像

Bear type = BearBlack;
switch (type) {
case BearBlack:
case BearGrizzly:
case BearPolar:
[self runLikeHell];
}

关于objective-c - 是否可以在 Obj-C 中使用 Swift 的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24139320/

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