如何在 Objective-C 中使用 Swift 结构体

2023-12-09

简而言之,我有一个存储应用程序常量的结构,如下所示:

struct Constant {

    static let ParseApplicationId = "xxx"
    static let ParseClientKey = "xxx"

    static var AppGreenColor: UIColor {
        return UIColor(hexString: "67B632")
    }
}

这些常量可以通过调用在 Swift 代码中使用Constant.ParseClientKey例如。但在我的代码中,它还包含一些 Objective-C 类。所以我的问题是如何在 Objective-C 代码中使用这些常量?

如果这种声明常量的方法不好,那么创建在 Swift 和 Objective-C 代码中使用的全局常量的最佳方法是什么?


遗憾的是,你不能暴露struct,也不是 Objective-C 的全局变量。看文档,其中部分说明:

当您需要 Objective-C 互操作性时使用类

如果您使用需要处理数据的 Objective-C API,或者需要将数据模型放入 Objective-C 框架中定义的现有类层次结构中,则可能需要使用类和类继承来对数据进行建模。例如,许多 Objective-C 框架公开了您希望子类化的类。

截至目前,恕我直言,最好的方法是这样的:

let ParseApplicationId = "xxx"
let ParseClientKey = "xxx"
let AppGreenColor = UIColor(red: 0.2, green: 0.7, blue: 0.3 alpha: 1.0)

@objc class Constant: NSObject {
    private init() {}

    class func parseApplicationId() -> String { return ParseApplicationId }
    class func parseClientKey() -> String { return ParseClientKey }
    class func appGreenColor() -> UIColor { return AppGreenColor }
}

在 Objective-C 中,你可以像这样使用它们:

NSString *appklicationId = [Constant parseApplicationId];
NSString *clientKey = [Constant parseClientKey];
UIColor *greenColor = [Constant appGreenColor];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Objective-C 中使用 Swift 结构体 的相关文章

  • CLLocation Manager如何在一定距离后更新

    我正在使用 CLLocationManager didupdatelocations 如下所示 func locationManager manager CLLocationManager didUpdateLocations locati
  • Objective-C:在哪里定义宏以便随处可用?

    我有一个 iOS 应用程序 它在许多视图控制器中使用相同的字符串 数字等 所以我认为最好在一个文件中定义这些常量并在所有视图控制器实现中使用它 优点是更改一个数字 我只需要做一次 而不是在所有视图控制器中都使用该数字 实际上 我的 h 文件
  • 如何在 iOS 上压缩 Realm DB?

    我想定期压缩 iOS 上的 Realm 实例以回收空间 我认为该过程是将数据库复制到临时位置 然后将其复制回来并使用新的default realm 文件 我的问题是Realm 其行为就像单例并回收对象 因此我无法真正关闭它并告诉它打开新的
  • Swift 中的“funcobserveValueForKeyPath(keyPath:NSString,object:AnyObject,change:NSDictionary,context:Void)”问题

    我已经为 AVPlayer 添加了一个观察者 如下所示 self audioPlayer addObserver self forKeyPath currentItem status options NSKeyValueObservingO
  • 将第 3 方库 ZXing 导入 Xcode

    我尝试了多种方法将第 3 方库 ZXing 导入我的 iOS 应用程序 但所有方法都很痛苦 或者根本不起作用 如果有人可以建议我做错了什么 或者提出导入 ZXing 等库的更好方法 我将非常感激 一定比这个容易 这就是我所做的 结果是 My
  • iPad 照片选择器崩溃

    我正在使用以下函数根据 UIActionSheet 的结果激活设备相机或图像选择器 如果 fromCamera YES 那么它适用于 iPhone 和 iPad 如果 fromCamera NO 那么它可以在 iPhone 上运行并出现图像
  • 我如何从子视图导航到 mainviewcontroller

    我刚刚开始使用 swift 我创建了一个子视图 上面有一个按钮 我想使用该按钮将我带到我的主视图控制器 我对不同的按钮使用了相同的功能 但是在同一文件中具有一个功能允许该按钮工作 代码如下 var playAgainButton UIBut
  • 是否有适用于 iPad 2 的条码扫描仪 SDK? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 iOS 8 自定义键盘发送图像?

    我一直在为 iOS 8 开发自定义键盘 但在尝试使用键盘发送图像时偶然发现了一个问题 我做了一些研究 似乎没有一种简单的方法可以做到这一点UITextDocumentProxy因为只有NSStrings被允许 我是否忽略了使用自定义键盘发送
  • 确定 SceneKit 中 SKVideoNode 的视频大小/长宽比

    如何从 AVPlayer 获取视频的视频大小来设置节点的几何大小 例如 我有一个具有宽度和高度的 SCNPlane let planeGeo SCNPlane width 5 height 5 所以现在我实例化我的视频播放器 let vid
  • 在没有预览窗口的情况下使用 AVCaptureVideoDataOutputSampleBufferDelegate

    我正在开发一个基于 Swift 的 macOS 应用程序 我需要捕获视频输入 但不将其显示在屏幕上 而不是显示视频 我想将缓冲的数据发送到其他地方进行处理 并最终显示它在 a 中的一个物体上SceneKit scene 我有一个Camera
  • 如何知道我的应用程序使用了多少 iCloud 空间?

    有没有办法查看我的应用程序正在备份到 iCloud 的内容以及它消耗了多少内存 Settings gt iCloud gt Storage Backup gt Manage Storage将显示正在备份的总计内容 iOS 会备份位于应用程序
  • 如何使用 NSUserDefaults 在 Swift 中存储自定义类的数组?

    我有一个名为的自定义类Person当某人输入信息时 它会存储有关某人的各种属性 class Person Person dictionary variable var name String var age String var html
  • 在 Swift 中从 UIScrollView 创建 PDF 文件

    我想从 UIScrollView 的内容创建一个 PDF 文件 func createPdfFromView aView UIView saveToDocumentsWithFileName fileName String let pdfD
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • AVAssetExportSession 为零 iPhone 7 - Plus 模拟器

    AVAssetExportSession在 iPhone 6 及以下版本上运行良好 但在 iPhone 7 iPhone 7 Plus 模拟器上运行不佳 Xcode 8 0 这段代码return nil在exportSession中 当在i
  • 如何让按钮闪烁?

    我试图在扫描正确时将按钮的颜色 只是闪烁 闪烁 更改为绿色 在出现问题时将按钮的颜色更改为红色 我可以用这样的视图来做到这一点 func flashBG UIView animateWithDuration 0 7 animations s
  • insertNewObjectForEntityForName:

    我使用 Xcode xcdatamodel 文件编辑器设置了一个实体 我创建了一个名为 Person 的实体 添加了一些属性 然后生成了一个 m 文件来表示它 一切都很好 现在 当我去编写一行代码时 例如 Person person Per
  • 根据 iOS 版本使用不同的类实现?

    iOS 11 最近添加了一个我想使用的新功能 但我仍然需要支持旧版本的 iOS 有没有一种方法可以将同一个类编写两次 并让较新版本的 iOS 使用该类的一个版本 而旧版本的 iOS 使用另一个版本 注 最初我用的是if available
  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后

随机推荐

  • 无法使用 OpenShift 安装 Pandas

    I am ssh ingFlask 应用程序OpenShiftPython 依赖项之一是 Pandas 0 16 1 纵观整个OpenShift 文档 我创建了我的setup py文件如下 from setuptools import se
  • mod重写和静态页面

    是否可以排除 mod 重写正在解析的 url 我的 htaccess 有重写规则 例如 RewriteRule contact contact us php 还有几个静态页面 目前我的网站没有使用方面的问题http domain com u
  • 当应用程序未运行时,Android 广播接收器不会触发

    遵循本指南https developer android com training monitoring device state battery monitoring html 我制作了一个接收器 每次插入或拔出充电器时 该接收器都应将电
  • 从资源加载嵌入的动画光标

    我在资源中有一个动画光标文件 ani 并希望将其显示为我的应用程序中的光标 如何从资源中加载它 我在互联网上查找 但只有当你有一个真实的文件并且它没有嵌入到资源中时才可以显示它 这里的资源修改是 调用中的byte 变量资源 由 Yvan G
  • 带有滑动过渡的 jQuery Mobile ChangePage

    在处理 向右滑动 事件时 我似乎无法制作 反向 幻灯片效果 因此 下面的代码工作正常 但我希望当我进行 向右滑动 时 下一页将从左侧而不是右侧滑入 我确实搜索了文档并添加了reverse true as 正如它所建议的进入 向右滑动 mob
  • 跳到指令中间 - 在 IA-32 中

    为什么IA 32可以让我们跳到指令的中间 当我用汇编器编写时 如何使用这种架构特征进行优化 除了明显的情况外 我们喜欢将命令的编码保存在寄存器内 然后激活该命令 由于历史原因 IA 32 允许跳转到指令中间 x86 指令集是 8080 使用
  • AngularJS:我可以使用过滤器在 ng-repeat 中对数组进行分块吗?

    编辑添加一个明确的问题 我有一个一定长度的平面数组 我想将其放入 tr td 类型视图中 这也可能位于引导网格或类似的东西中 本质上我想在一系列长度为 n 的块中显示一个平面数组 这个问题有很多变体 但我还没有真正看到一个很好的解释 如何使
  • pygame 中的霓虹灯效果?

    我正在使用 pygame 项目 我需要我的游戏立方体具有霓虹灯效果 pygame 有没有一个函数可以制作霓虹灯效果或类似的东西 pygame draw rect win 255 0 255 neon Pygame 没有 发光 绽放 或 霓虹
  • 在 Android 中使用结构查询 (sq) 从 Google Spreadsheet API 检索数据时出现错误

    我正在 Android 中使用 Google Spreadsheet API 我成功完成了集成并能够检索行 但在搜索功能上遇到了一些问题 我正在对电子表格进行 3 4 种不同的搜索 问题是在我的电子表格中的某些列中 单词之间有空格 例如 H
  • C++ 同名函数的继承

    我有以下类声明 class human public void msg cout lt lt I am human n class John public human public void msg cout lt lt I am a Jo
  • 从 xml 中提取节点数据

    我有一个像这样的xml
  • 在 WooCommerce“我的帐户”订单表的新列中显示产品类别

    我想添加一个自定义列 以在 wooCommerce 中的订单历史记录表上显示产品类别 我找到了如何添加自定义列 但我似乎无法显示链接到此列中的订单的分类产品 对于这个例子 我只有 1 个产品 但如果我可以显示不止一种税 那就更好了 这是我发
  • 在项目中进行任何更改但升级 eclipse android sdk 后出现 java.lang.ClassNotFoundException [重复]

    这个问题在这里已经有答案了 前段时间我开发了一个相当简单的应用程序 目标是4 2 2 我让它在我的设备上正常工作 然后我停止了开发大约1个月 在最近的 Google I O 之后 我决定重新开始开发 我首先做的是打开 Android SDK
  • 检索 asp:TextBox 的值

    我有一个禁用的文本框 我正在使用 JavaScript 在客户端编辑其值 当我尝试检索服务器端的值时 它不会反映在客户端所做的更改 如果我将文本框的启用属性设置为 true 我可以检索该值 但用户可以放置焦点并编辑文本框 有没有一种明智的方
  • PHP 从数组中获取最高值

    我试图获取数组中的最大值 同时仍然保留项目标签 我知道我可以通过运行 sort 来做到这一点 但如果我这样做 我只会丢失标签 这使得它对我所需要的毫无意义 这是数组 array a gt 1 b gt 2 c gt 4 d gt 5 有任何
  • Lucene 4.0 IndexWriter 更新数字术语文档

    我只是想知道如何根据数字字段更新 删除 插入 文档 到目前为止我这样做了 LuceneManager updateDocument writer new Term id NumericUtils intToPrefixCoded sente
  • javascript解析浮点错误

    我正在尝试获取表的行总和 td1 价值 5 000 00 美元 td2 价值 3000 00 美元 我正在使用以下代码 var totalnum 0 num each function totalnum parseFloat this ht
  • 如何使用所需的用户库执行maven主类?

    我创建了一个 Maven 项目 其中只有一个类可用 我想在这个类中使用 jnetpcap API 为此 我遵循了jnet eclipse 设置使用设置 1 方法 用户库 的教程并创建了一个用户库并将其添加到我的项目中 JnetTest ja
  • 如何让机器人按住鼠标按钮一段时间?

    我正在使用 Java 使用 Robot 类生成鼠标按下操作 robot mousePress InputEvent BUTTON1 MASK robot mouseRelease InputEvent BUTTON1 MASK 但是 我希望
  • 如何在 Objective-C 中使用 Swift 结构体

    简而言之 我有一个存储应用程序常量的结构 如下所示 struct Constant static let ParseApplicationId xxx static let ParseClientKey xxx static var App