当前位置: 首页 > 知识库问答 >
问题:

iOS:对locale.preferredlanguages.first使用强制解包安全吗?

东方英豪
2023-03-14

在我的应用程序中,我需要第一个preferredlanguage,我不能使用任何回退机制,所以像locale.preferredlanguage.first?? 其他对我来说就不行了。 所以,我认为这是安全的假设,应用程序总是至少有一种首选语言,只需使用武力打开包装。 我的意思是,如果不使用某种语言,整个设备就无法运行,因此preferredlanguage数组应该始终至少有一个值! 我的推论正确吗? 我试着谷歌这个,但没有找到很多信息。
谢谢!

共有1个答案

章威
2023-03-14

我认为在您的情况下,它总是有一个第一值,如果您使用强制解包,您的代码就不会崩溃。 这是因为你总是至少有一种开发语言

但我认为你永远不应该依赖武力解包的价值观。 最好使用guard-let或if-let来解包值,并优雅地处理错误。 例如,您可以显示标题为:Internal error Occurred的警报,和/或Firebase或其他类型的日志事件。

guard let firstPreferredLanguage = Locale.preferredLanguages.first else {
    showAlert("Unexpected internal error occured.")
    logFatalErrorEvent("Locale.preferredLanguages was empty!")
    return
}
 类似资料:
  • 问题内容: 当我使用fputcsv将行写出到打开的文件句柄时,PHP会将封闭字符添加到它认为需要的任何列中,而其他列将不包含任何封闭物。 例如,您可能会得到这样的一行 除了在每个字段的末尾添加虚假空格之外,是否有任何方法可以强制fputcsv始终将列包含在外壳中(默认为“”)? 问题答案: 不,fputcsv()仅在以下情况下封闭该字段 没有“始终封闭”选项。

  • 本文向大家介绍Linux 强制安装 rpm 包的解决方法,包括了Linux 强制安装 rpm 包的解决方法的使用技巧和注意事项,需要的朋友参考一下 Linux 正常安装 rpm 的命令是: 重复安装时需加属性: 软件包重复安装将会失败,若仍需要安装必须加 --replacepkgs 属性 软件包的某个文件已在安装其他软件包时安装过,则安装将会失败,若仍需要安装必须加 --replacefiles 

  • 我正在iOS上使用加密/解密我的机密密钥,并将其保存在中。已成功设置并加密数据。但是每当我试图解密数据时,它都会给我以下错误: Error domain=nsosstatuserrordomain code=-50\“ecies:未能到aes-gcm解密数据\”userinfo={nsdescription=ecies:未能到aes-gcm解密数据} 此外,在10.3中,使用KseckeyAlgo

  • 我正在从事混合JavaScala项目,并且经常需要转换集合。 当我想转换一个基元集合时,我应该写这样的东西 但是,我知道Java和Scala通用集合都使用装箱值,因此我可以安全地避免使用不必要的装箱进行迭代,只需编写 然而,若我在集合类型或元素类型中出错,编译器不会抱怨。 有没有一种类型安全的方法可以避免额外的迭代?至少有一种方法可以检查集合类型吗?

  • 当前的增删改查,无论登陆与否都可以操作,实在太不靠谱了,所以,还是加个检查吧. 判断用户登陆 UserModule添加一个注解 @Filters(@By(type=CheckSession.class, args={"me", "/"})) 含义是,如果当前Session没有带me这个attr,就跳转到/页面,即首页. 同时,为login方法设置为空的过滤器,不然就没法登陆了 @Filters(

  • 创建 iOS Security 这个站点的目的就是让所有的 iOS 开发者都能具备一定的安全知识,能方便的学习关于 iOS 安全的基础知识。

  • 本课程由资深 iOS 程序媛念茜编写,重点讲解了 iOS 的常用攻击手段,以及黑客们常用的工具和技术,并通过 Hack 实战案例(支付宝 App ) 详细分析了攻击的方式和原理。

  • 我们正试图找到一种使用JPA来持久化枚举的可靠方法。使用的常见方法是不可取的,因为在重构时破坏映射太容易了。每个枚举都应该有一个单独的数据库值,它可以不同于枚举名称/顺序,这样您就可以安全地更改枚举的名称或内部顺序(例如序数值),而不会破坏任何东西。例如,这篇博客文章有一个如何实现这一目标的示例,但是我们觉得建议的解决方案给代码增加了太多的混乱。我们希望通过使用JPA 2.1中引入的新的机制来实现