如何在 NSUserDefaults 中存储 Swift 枚举值

2024-04-29

我有一个这样的枚举:

enum Environment {
    case Production
    case Staging
    case Dev
}

我想在 NSUserDefaults 中保存一个实例,如下所示:

func saveEnvironment(environment : Environment){
    NSUserDefaults.standardUserDefaults().setObject(environment, forKey: kSavedEnvironmentDefaultsKey)
}

我知道 Swift 枚举不是 NSObject,这使得保存变得困难,但我不确定将其转换为可存储的内容的最佳方法是什么。


使用 rawValue 作为枚举是使用可以存储在 NSUserDefaults 中的类型的一种方法,定义您的枚举以使用 rawValue。原始值可以是字符串、字符或任何整数或浮点数类型:

enum Environment: String {
    case Production = "Prod"
    case Staging    = "Stg"
    case Dev        = "Dev"
}

您还可以直接使用 rawValue (可能来自 NSUserDefaults )创建一个枚举实例,例如:

let env = Environment(rawValue: "Dev")

您可以像这样从枚举对象中提取 rawValue (String),然后根据需要将其存储在 NSUserDefaults 中:

if let myEnv = env {
    println(myEnv.rawValue)
}


func saveEnvironment(environment : Environment){
    NSUserDefaults.standardUserDefaults().setObject(environment.rawValue, forKey: kSavedEnvironmentDefaultsKey)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 NSUserDefaults 中存储 Swift 枚举值 的相关文章

  • 更改 UIAlertController 的标题字体大小

    我正在尝试更改标题fontSize in an UIAlertController 但我无法管理如何设置我的NSMutableAttributedString to the title 财产 所以我一直在创造NSMutableAttribu
  • 运行时警告 CLSUserDefaults 实施了两次

    在 cocoapod 源中使用 import 语法时 我在 pod 定义的类中看到了与下面类似的警告 但这是一个内部苹果类定义 CLSUserDefaults 我无法控制它 也不会进行子类化 我不知道这是否真的造成了问题 但它不应该发生 o
  • 快速从 appDelegate 中 popToRootViewController

    我试图从应用程序委托弹出到导航堆栈的根视图控制器 并且在将 obj c 中的内容转换为 swift 时遇到一些问题 obj c 中的工作原理 UINavigationController navigationController UINav
  • 无法在 Swift 中获取 plist URL

    我对这个真的很困惑 网络上有很多问题询问 如何从 Swift 中的 plist 文件获取信息 并且到处都发布了相同的答案 let path NSBundle mainBundle pathForResource Config ofType
  • CloudKit 获取当前用户的所有订阅

    我设法在 Apple CloudKit 中保存 更改和删除记录 我什至收到了与订阅相关的通知 但我不知道如何列出当前用户的所有订阅 到目前为止 这是我的代码 let operation CKFetchSubscriptionsOperati
  • 正在解除分配时尝试加载视图控制器的视图... UISearchController

    我有创建一个的代码UISearchController in my UIVIew sviewDidLoad self resultSearchController let controller UISearchController sear
  • Braintree DropIn + Apple Pay,未出现 Apple Pay 项目

    我成功调用DropIn来自 Braintree SDK 的视图 这BTDropInRequest设置应显示三项 PayPal 信用卡 苹果支付 但由于某种原因在DropIn视图仅呈现两个项目而不是三个 PayPal 信用卡 我做错了什么 准
  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • 我可以在 NS_SWIFT_NAME 中使用保留关键字吗?

    我正在尝试使 Objective C 委托协议更漂亮以便在 Swift 中使用 但我在弄清楚如何使用时遇到了一些麻烦NS SWIFT NAME 是否可以使用NS SWIFT NAME指定 Swift 名称中与 Objective C 关键字
  • 在 Swift 中将 Int 转换为 UInt32

    我正在制作一个 Tcp 客户端 因此使用CFStreamCreatePairWithSocketToHost它期望第二个参数为 UInt32 这是我正在尝试做的事情的示例 func initNetwork IP String Port In
  • Swift -boundingBox 导致 EXC_BAD_ACCESS (代码 = 1)

    我正在使用 SceneKit 来显示文本节点 这是我的代码 foo swift extension SCNNode func getNodeSize gt width Float height Float let min max bound
  • swift 中的负数模

    负数模如何在 swift 中工作 当我执行 1 3 时 它给出 1 但余数是 2 其中有什么问题 雨燕余数运算符 计算余数 整数除法 a b a a b b where 是截断整数除法 在你的情况下 1 3 1 1 3 3 1 0 3 1
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • ObjC <-> Swift 桥接和工厂方法

    我想从 Swift 使用一些 Objective C 类 由于超出了这个问题范围的原因 我的班级init方法被标记为不可用 相反 有一个工厂方法 这是我的班级的简化形式 interface MyClass NSObject instance
  • 从 AF.Request 响应获取数据

    我需要使用 Alamofire 的 Post 请求调用的 json 响应中的数据 但由于某种原因我无法访问该数据 我尝试按照 Alamofire github 文档以及这篇文章进行操作从 AF 响应 JSON 获取数据 https stac
  • 我正在寻找 GCDAsyncUdpSocket 上的一些示例,但发现没有一个有效

    接收数据从未被调用过 我编写了这个由我的主线调用的 swift 类UI视图控制器向接收消息的服务器发送消息 但当服务器发回响应时 客户端永远不会收到它 因为 didReceiveData 从未被触发 我一直在谷歌上搜索并查看文档 它说客户端
  • 在Swift中计算没有透明度的颜色,通过用透明颜色叠加颜色获得

    我有一个具有非透明颜色的原始 UIVieworgColor 这是由一个覆盖 UIView 覆盖的 该 UIView 具有overlayColor具有透明度 alpha 通道 鉴于这两种颜色orgColor and overlayColor我
  • 如何将代码 AVFoundation Objective C 转换为 Swift?

    我正在 swift 中使用 AVFoundation 来拍照 但我无法将任何 func 代码行从 Objective C 转换为 Swift 我的功能代码是 void capImage method to capture image fro
  • 小部件配置在 macOS 上不起作用

    我为我的 iOS 应用程序制作了一个小部件 效果很好 现在我正在将其移植到我的 macOS 应用程序中 但不知何故 小部件配置不起作用 这些项目已显示 但我无法以某种方式选择它们 查看屏幕截图 但请看一下我制作的视频 https youtu

随机推荐

  • 强制子类在重写方法上调用 super

    当扩展类时 有时我们会忘记在已经实现的方法中调用超类实现 当方法被重写而不调用 super 时 有什么方法可以通过抛出错误或其他内容来防止这种情况发生 Example class MainClass implements OnInit ng
  • 非规范化 ngrx 存储 - 设置选择器?

    我目前正在 ngrx 项目中处理一个有点复杂 深层 的结构 它可以被认为是父对象的数组 具有多个级别的子对象 它在服务器端标准化 扁平化 我的商店中的功能看起来像这样 rootObjs level1 byId lvl1 1 id lvl1
  • “任何一个或多个这些元素但必须至少有一个”的 XML 模式构造

    我正在尝试设置类似于 序列 的模式的一部分 其中所有子元素都是可选的 但至少有一个元素must存在 并且可能不止一个 我尝试执行以下操作 但 XMLSpy 抱怨 内容模型包含无法唯一确定的元素 和
  • 如何使用浮动而不翻转浮动项目并更改源顺序?这可能吗?

    看这个例子就明白了 http jsbin com ocewu http jsbin com ocewu 替代文本http easycaptures com fs uploaded 212 8042227539 png http easyca
  • Spring-MVC 3.1:如何映射带有尾部斜杠的 URL?

    我正在将旧版 servlet 应用程序转换为 Spring 3 1 在此过程中 一些 URL 现在已过时 我们的网络存在一些问题 短期内不会得到解决 我的老板不想相信他们的重定向将始终有效 因此 她要求我将自己的重定向放入网络应用程序中 一
  • 为现有数据库/sql 视图创建 django 模型?

    我已在 template dir sql someTableName sql 文件中插入视图的定义 创建或替换视图 所以每次我运行syncdb 创建数据库视图 我可以在 models py 中创建一个访问该视图的 python 类吗 使用
  • 如何进行不区分大小写的字符串比较?

    如何使下面的行不区分大小写 drUser Enrolled enrolledUsers FindIndex x gt x Username string drUser Username 1 今天早些时候我得到了一些建议 建议我使用 x Us
  • 将静态链接的 elf 二进制文件转换为动态链接的

    我有一个 elf 二进制文件 它已静态链接到 libc 我无权访问其 C 代码 我想使用 OpenOnload 库 它在用户空间中实现了套接字 因此与标准 libc 版本相比提供了更低的延迟 OpenOnload 实现标准套接字 api 并
  • CSS 网格行垂直溢出其容器

    我想在页面上有一个网格布局 其中网格延伸到整个视口 并且行具有最小高度 最简单的示例是具有单个单元格的网格 请参见下面的代码片段 我遇到的问题是 当视口的高度小于定义的最小行高时 该行垂直溢出其容器 通过在下面的示例中添加红色和绿色边框 可
  • iPhone 相机访问权限?

    我想知道如何访问 iPhone 相机并实时使用它 例如 仅在相机视图上绘图 另一个相关问题 可以显示吗同时 4 个摄像机视图就像 Mac 上的 Photo Booth 一样 您可以使用 AVFoundation 来做到这一点 void in
  • 从布伦特里汇款

    我使用 Braintree 作为我的网站的付款方式 收款时没问题 但现在我想将钱转入特定客户帐户 不退款 请帮我 谢谢你 Full disclosure I work at Braintree If you have any further
  • 如何让wildfly localhost连接自动变成https?

    我需要在本地主机上使用 https 协议测试我的 Web 应用程序 我怎样才能在wildfly上配置设置以使https localhost 8443 myapp html works New 我将其添加到我的安全领域
  • 使用 Google 地图对 geoJson 文件中的点进行自定义标记

    我使用 GeoJSON 作为 Google 地图的数据源 我使用 API v3 创建数据层 如下所示
  • Node.js 中的缓冲区是什么?

    正如您可以在有关 Buffer 类的 Node js 文档 http nodejs org api buffer html 一个缓冲区 类似于整数数组 但对应于 V8 堆外部的原始内存分配 到目前为止 一切都很好 现在让我困惑的是 从技术上
  • 查找其他列表项中列表项的列表索引

    我有一个长字符串列表 我想获取与另一个列表中的字符串子字符串匹配的列表元素的索引 使用列表理解可以轻松检查列表项是否包含列表中的单个字符串 例如这个问题 https stackoverflow com questions 4843158 c
  • AJAX 加载 WordPress 内容

    我一直在遵循 AJAX 教程来尝试将我的 WordPress 帖子内容加载到我网站的主页上 而无需重新加载页面 我不知道为什么 但是当单击链接时 它仍然导航到页面 而不是将内容加载到我指定的 div 中 不管怎样 这对我来说有点太多了 我希
  • [UIScreen mainScreen].bounds 与 [UIApplcation sharedApplication].keyWindow.bounds?

    我认为我想覆盖整个屏幕 我想将其框架设置为覆盖整个屏幕 浏览堆栈溢出 我发现设置视图框架覆盖屏幕的两种不同方法 UIScreen mainScreen bounds UIApplcation sharedApplication keyWin
  • 为什么 XDebug 忽略 NetBeans 6.8 中的断点?

    我在 Ubuntu 10 04 笔记本电脑上运行 PHP 5 3 2 Apache 2 2 14 和 xdebug 2 2 0rc1 并且尝试在 Netbeans 6 8 中的本地主机上设置调试 我的问题是我在 Netbeans 中设置的断
  • 尝试从 assetForURL:resultBlock 内部分配 __block ALAsset 时出错:

    我正在尝试创建一个方法 该方法将返回给定资产 url 的 ALAsset 我需要稍后上传资产 并希望在结果块之外执行此操作 ALAsset assetForPhoto Photo photo ALAssetsLibrary library
  • 如何在 NSUserDefaults 中存储 Swift 枚举值

    我有一个这样的枚举 enum Environment case Production case Staging case Dev 我想在 NSUserDefaults 中保存一个实例 如下所示 func saveEnvironment en