如何在 Objective-C 中使用 Swift String 枚举?

2023-12-11

我有这个枚举String值,它将用于告诉记录到服务器的 API 方法消息具有哪种类型的服务器。我使用的是 Swift 1.2,因此枚举可以映射到 Objective-C

@objc enum LogSeverity : String {
    case Debug = "DEBUG"
    case Info = "INFO"
    case Warn = "WARN"
    case Error = "ERROR"
}

我收到错误

@objc enum raw type String 不是整数类型

我还没有找到任何地方说只有整数可以从 Swift 转换为 Objective-C。是这样吗?如果是这样,有人对如何在 Objective-C 中提供类似的功能有任何最佳实践建议吗?


解决方案之一是使用RawRepresentable协议。

必须编写 init 和 rawValue 方法并不理想,但这允许您在 Swift 和 Objective-C 中像往常一样使用此枚举。

@objc public enum LogSeverity: Int, RawRepresentable {
    case debug
    case info
    case warn
    case error

    public typealias RawValue = String

    public var rawValue: RawValue {
        switch self {
            case .debug:
                return "DEBUG"
            case .info:
                return "INFO"
            case .warn:
                return "WARN"
            case .error:
                return "ERROR"
        }
    }

    public init?(rawValue: RawValue) {
        switch rawValue {
            case "DEBUG":
                self = .debug
            case "INFO":
                self = .info
            case "WARN":
                self = .warn
            case "ERROR":
                self = .error
            default:
                return nil
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Objective-C 中使用 Swift String 枚举? 的相关文章

  • iPhone Objective-C 以编程方式将范围按钮添加到 UISearchBar

    我目前这段代码用于创建 UISearchBar 改编自之前的 stackoverflow 示例 UISearchBar searchBar UISearchBar alloc initWithFrame CGRectZero searchB
  • 身份验证后如何退出 Google

    所以我的应用程序可以选择使用 Google 登录 单击 Google 提供的按钮后 将打开一个 Web 视图并让用户输入其凭据 允许应用程序访问其信息后 应用程序将用户登录并将 SignInViewController 更改为 TabBar
  • initWithFrame 与 initWithStyle

    我想从已弃用的 TableView 中更新initWithFrame reuseIdentifier 我的表格视图使用自定义单元格 到处都说要使用initWithStyle 并且它不会以任何方式改变行为或细胞initWithFrame CG
  • 如何在当前视图上方创建半透明视图层?

    您可能以前见过这种情况 它在 ScoutMob 等消费时尚应用程序中变得非常流行 我正在尝试在启动时实现 60 的透明视图 该视图将覆盖我的主屏幕 解释如何使用主屏幕的功能并在点击时消失 我已经完成了整个应用程序 它从几年前就开始使用 xi
  • 使用 Xcode 资产目录缓存 UIImage

    我们都知道UIImage神秘的幕后缓存机制imageNamed 方法 在苹果的UIImage 类参考 https developer apple com library IOS documentation UIKit Reference U
  • 在 UIScrollView Swift 中禁用垂直滚动

    不要将此问题标记为重复 我读了很多问题 但没有找到问题的答案 我的问题如下 我有一个UIScrollView它应该只水平滚动 这里它垂直滚动 20px 奇怪的事实 它似乎与状态栏的高度相同 我尝试打印内容大小 y 偏移量和高度UIScrol
  • 为什么 cudaGLSetGLDevice 失败,即使它是在 main 函数的第一行中调用的

    我想使用 OpenGL 和 CUDA 之间的互操作性 我知道 正如一些教程所说 第一步是选择设备 但是 当我在主函数的第一行中调用 cudaGLSetGLDevice 0 时 程序退出并显示信息 cudaSafeCall 运行时 API 错
  • 如何在 Swift 中的标签上制作阴影效果?

    我不知道如何在标签上编写阴影代码 我有一个会改变的乐谱标签 因此无法仅对带有阴影的文本进行Photoshop处理 我需要对其进行编码 以便它始终自动在文本后面有一个模糊的阴影 有人可以举一些例子或提供帮助吗 人们说这是重复的 重复 是关于
  • Objective C - 如何从 NSAttributedString 创建 rtf

    我可以使用以下方法从 rtf 字符串转换为属性字符串 NSAttributedString attributedStr NSAttributedString alloc initWithData data options NSDocumen
  • 枚举的各个值可以实现接口吗

    An enum可以实现一个接口 某些值是否可以实现接口 我正在考虑的用例是一个标记接口 如下所示 interface Foo interface Bar enum Widgets FOO implements Foo BAR 1 imple
  • 如何在没有用户交互的情况下调用 uipickerView: didSelectRow: inCompetent: ?

    我有 2 个组件 相互依赖pickerView 我有预览UIImageView每次用户使用时都会改变pickerView 并触发didSelectRow inComponent 这正如我预期的那样工作 但是 我想要pickerView引起d
  • NSAttributedString - 获取字体属性

    我需要获取有关我的属性字符串的信息 但不知道如何获取 我得到这本词典 2013 11 04 18 06 10 628 App 1895 60b NSColor UIDeviceWhiteColorSpace 0 3 1 NSFont
  • 收到 fcm 推送通知时设置应用程序徽章

    我正在使用 FCM 进行云消息传递 当我在后台和前台应用程序状态下收到来自服务器的推送通知时 我想添加应用程序徽章 我缺少什么 主要问题是根据推送通知添加 更新 删除应用程序徽章 我可以接收和处理推送消息 我在这个问题上花了 3 天 请帮帮
  • 使用 OpenGL ES 绘制地球仪

    我正在尝试渲染一个地球仪 上面有地图的球体 OpenGL ES 1 1 on iOS 我能够绘制球体并绘制边界 但有一个问题 在我看来 不面向前方的线条也被绘制在屏幕上 像这样 在图片中 您可以看到美国渲染得很好 但您可以看到澳大利亚渲染在
  • 本机 C++ 和 C# 互操作

    因此 我正在构建一个必须使用 C 工作的应用程序 但 MFC ATL 太混乱了 不符合我的喜好 所以我有了一个绝妙的主意 即用本机 C 编写所有 思考 代码 并用 C 编写所有漂亮的 UI 代码 但问题是两者之间的互操作性 在我对此过于着迷
  • 关闭模态视图控制器时如何保持呈现视图控制器的方向?

    我正在开发这个应用程序 我需要所有视图控制器 但只有一个是纵向的 单一视图控制器很特别 我需要它能够旋转到手机所在的任何方向 为此 我以模态方式呈现它 未嵌入导航控制器中 所以 例如 我的结构是这样的 window Portrait roo
  • Xcode 6 无法在 Swift 中自动完成

    我正在尝试导入各种库 但我不记得它们的确切名称 很遗憾Xcode6 使用swift 不会像中那样自动完成它们Xcode5 使用objective c 例如 ALAssetsLibrary MPMediaPlayer etc 我被迫用谷歌搜索
  • 错误:Jenkins 中“没有这样的模块

    我正在尝试设置JenkinsSlave 构建我的 Swift 项目 该项目使用名为 Freddy 的 Swift pod 问题是构建失败并出现错误 错误 没有这样的模块 Freddy 这是我的 Podfile platform ios 8
  • 设备锁定时播放 iPod 库中的音频

    只是一个简单的问题 我已经将我的程序设置为能够播放AVAudioPlayer and AVPlayer在后台 运行良好 我可以播放歌曲 锁定屏幕 声音将继续播放 我遇到的问题是打电话 AVPlayer play 虽然我的屏幕已经锁定 这最终
  • 在 iOS Swift 中将 NSDate 转换为字符串 [重复]

    这个问题在这里已经有答案了 我正在尝试转换NSDate to a String然后更改格式 但当我经过NSDate to String它正在产生空白 let formatter DateFormatter let myString Stri

随机推荐

  • Boost 的 lexical_cast 从双精度到字符串精度

    我正在使用一个不幸使用的库boost lexical cast从 a 转换double to a string 我需要能够明确地反映我这边的行为 但我希望这样做而不传播boost 我可以使用以下方法保证相同的行为吗to string spr
  • 通过 OAuth 对 Google API 进行身份验证调用时遇到问题

    当我尝试使用服务器到服务器身份验证调用 Google Directory API 时 收到错误消息 未授权访问此资源 api 我做了什么 在 Google Developers Console 中创建了一个应用程序 下载私钥并查找服务帐户名
  • 如何使用外部 jar 文件为 java 制作 makefile

    我需要制作一个 makefile 用外部 jar 文件编译和执行我的类 我有4节课 sync java FileSynchroniser java DirectoryTracer java and SyncFileTracer java 我
  • 具有自动内存清理功能的图像下载器

    我有一个项目列表 简单的列表框 其中包含主从基础上的图像 如果用户单击列表项目 则会打开详细信息页面 我遇到了非常著名的图像内存泄漏问题 描述here here here and here 一种可能的方法是遍历所有图像当导航自并清洁它们 I
  • 是否可以在 WindowButtonMotionFcn 中使用多个回调?

    我创建了一个类 为构造中的图形添加功能 这个类创建一个监听器WindowMouseMotion事件 但是 为了触发此事件 我必须为该图添加一个虚拟回调函数WindowButtonMotionFcn财产 我首先检查该属性是否已填充 如果不是
  • Java 泛型和泛型类型

    我有一个 ExtA 类 其中包含一个过滤函数来过滤 ArrayList public ExtA
  • leaflet 插件和 leafletProxy 以 polylineDecorator 为例

    另请参考一个问题leaflet 插件和 leafletProxy 我想用折线装饰器插件在 R 的传单中 下列的有关如何使用 R 中的传单插件的说明 如果我将该方法与leaflet 请参阅第一个示例 它按我想要的方式工作 但如果我尝试使用相同
  • Excel 互操作:_Worksheet 还是 Worksheet?

    我目前正在撰写有关动态类型的文章 并给出了 Excel 互操作的示例 我以前几乎没有做过任何 Office 互操作 这表明了这一点 这MSDN Office 互操作教程对于 C 4 使用 Worksheet界面 但还有一个Worksheet
  • 在 Python Social Auth 中获取 Facebook 用户喜欢

    我正在使用 Django 启动一个项目 并尝试允许用户使用 Facebook 登录 出于网站目的 我想将用户喜欢存储在我的数据库中 我以 Python Social Auth 我用于该项目的库 上的示例应用程序为例 并且编写了一个用于在数据
  • 在 IIS 服务器上发布 C# 控制台应用程序

    是否可以在 IIS 服务器上部署控制台 C 应用程序 我有一个 exe 文件在一台机器上运行 该文件从命名管道获取数据 我的 C 应用程序从管道获取此数据并将其发送到使用 TCP 套接字运行的 Web 应用程序 我想知道是否可以部署我的 C
  • JavaScript 分离轴定理

    我正在尝试使用 JavaScript 中的分离轴定理来检测两个正方形碰撞 一个旋转 一个不旋转 尽管我很努力 但我无法弄清楚这在 JavaScript 中会是什么样子 也找不到任何 JavaScript 示例 请帮忙 用简单的数字或 Jav
  • 在 Google Colab 文本单元中插入图像

    我想将图像插入到 google colab 中的文本单元格中 该图像已上传到 google 云端硬盘中 为此 我使用 Markdown 语法 名称 获取可共享链接 但这不起作用 我的链接如下所示 https drive google com
  • 为什么 CSS :active on link 不会突出显示当前页面链接?

    我有下面的代码用于列表到母版页 div ul li a href default aspx Home a li li a href page1 aspx Page1 a li ul div with css header a hover c
  • 同时访问<地址>,但修改需要独占访问

    我想指定一个属性 它是一个用于在函数中进行操作的数组myFunc 但我收到此错误 这是我的代码草图 self data MyObject func myFunc x inout Int y inout Int manipulation co
  • 从Flask路线启动scrapy

    我想构建一个爬虫 它获取要抓取的网页的 URL 并将结果返回到网页 现在我从终端启动 scrapy 并将响应存储在文件中 当某些输入发布到 Flask 时 如何启动爬虫 处理并返回响应 您需要在 Flask 应用程序中创建一个 Crawle
  • C# 中如何获取目录中的文件列表

    所以 我正在用 C 开发 mp3 播放器 但我遇到了一个问题 我想从列表中的目录中获取所有文件 因此您可以选择 您要播放的歌曲 这是获取文件的代码 string music Directory GetFiles dir mp3 然后就可以玩
  • 关联对象什么时候被释放?

    我通过对象 A 的关联引用来附加对象 B 对象 B 通过 KVO 观察对象 A 的一些属性 问题是对象 B 似乎已被释放after对象 A 这意味着将自身作为对象 A 的 KVO 观察者删除为时已晚 我知道这一点是因为我收到 NSKVODe
  • 输出给定字符串中第一个重复字符的代码?

    我试图找到字符串中的第一个重复字符并使用 python 输出该字符 检查我的代码时 我可以看到我没有索引代码的最后一个字符 我究竟做错了什么 letters acbdc for a in range 0 len letters 1 prin
  • NHibernate 过滤器集合

    使用 NHibernate 我想过滤类中的集合以仅包含可能对象的子集 下面我提供了一个示例表数据来帮助解释 我找不到使用 NHibernate 来做到这一点的方法 表 数据对象 数据对象 ID PK 名称 当前版本 11 data txt
  • 如何在 Objective-C 中使用 Swift String 枚举?

    我有这个枚举String值 它将用于告诉记录到服务器的 API 方法消息具有哪种类型的服务器 我使用的是 Swift 1 2 因此枚举可以映射到 Objective C objc enum LogSeverity String case D