Swift 中的 UserDefaults 让人疯狂[UI]

2024-03-02

当我开始接触 Swift 和 SwiftUI 时,我发现从 UIKit 迁移的过程非常困难。 即使在尝试理解我在网上找到的许多教程之后,目前仍被 UserDefaults 所困扰。

请告诉我我在这里做错了什么: 非常简单的代码:

  1. 将 bool 值注册到 UserDefault,
  2. 在文本中显示该布尔值!

没有比这更简单的了。 但我无法让它工作,因为对 UserDefaults 的调用会抛出此错误消息:

实例方法“appendInterpolation”要求“Bool”符合“_FormatSpecifying”

我的“应用程序”是默认的单视图应用程序,有以下 2 个更改:

1-在 AppDelegate 中,我注册了我的 bool :

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    UserDefaults.standard.register(defaults: [
    "MyBool 1": true
    ])


    return true
}

2-在 ContentView 中,我尝试显示它(在 struct ContentView: View 内部):

let defaults = UserDefaults.standard

var body: some View {
    Text("The BOOL 1 value is : Bool 1 = \(defaults.bool(forKey: "MyBool 1"))")
}

有任何想法吗 ?

Thanks


你的问题是Text(...)初始化器需要一个LocalizedStringKey而不是一个String它在字符串插值中支持与普通字符串不同的类型(不包括Bool显然)。

有几种方法可以解决这个问题。

你可以使用Text初始化器需要一个String并且只是逐字显示它而不尝试进行任何本地化:

var body: some View {
    Text(verbatim: "The BOOL 1 value is : Bool 1 = \(defaults.bool(forKey: "MyBool 1"))")
}

或者,您可以扩展LocalizedStringKey.StringInterpolation支持布尔值,然后你的原始代码应该可以工作:

extension LocalizedStringKey.StringInterpolation {
    mutating func appendInterpolation(_ value: Bool) {
        appendInterpolation(String(value))
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 中的 UserDefaults 让人疯狂[UI] 的相关文章

随机推荐

  • 如何在android中的表格布局行中显示结果列表?

    我在 Android 中将列表数据显示到 TextView 时遇到了一点问题 我的情况是我有一个表格布局与默认一TableRow 在表格行内 我已被创建新线性布局 然后 四TextView里面创建的线性布局 我向这个文本视图添加了一些默认值
  • Symfony2:发送 HTTP 请求

    我正在尝试从我的一个控制器发出 HTTP 请求来联系另一个 URL 目标是联系另一个 URL 并简单地在我的页面中打印 HTML 答案 我试过 r new Request r gt create http www google com GE
  • 读取大TXT文件,内存不足异常

    我想读取大小为500MB的大文本文件 首先我使用 var file new StreamReader filePath ReadToEnd var lines file Split new n 但它抛出内存不足异常然后我尝试逐行读取 但在读
  • 获取通用抽象类的属性名称

    考虑以下通用抽象类的实现 public abstract class BaseRequest
  • 如何在 SQL 中将字符串按数字排序?

    谁能告诉我如何解决这个问题 我的顺序是按课程编号 例如 CS 20 CS 25 CS 100 都是课程编号 升序 不过 它计算的是第一个数字而不是整个数字 Course Grade CS 120 Intro to Java Programm
  • 如何制作像 Chrome 中那样的溢出菜单?

    我想制作一个类似于 android 中的 chrome 应用程序的溢出菜单 其中有前进 后退和书签按钮 这是溢出菜单 https i stack imgur com Tenox png在 Chrome 应用程序中 有任何想法吗 您无法为溢出
  • 与 Web 小部件通信 - Meteor、React、Node

    我正在构建一个聊天仪表板和小部件 客户应该能够将小部件放入他们的页面中 一些类似的例子是Intercom http www intercom com or Drift http drift com 目前 主 应用程序是用 Meteor js
  • (错误?)InnoDB MySQL 错误 1025,errno 150 外键

    我有一个表 我正在尝试更改其主键 这是表定义 CREATE TABLE tbl customer PersonId int 11 NOT NULL Id int 10 unsigned NOT NULL Name varchar 100 c
  • 如何在不停机的情况下将更改部署到生产中(通用托管)?

    在不停机的情况下部署从开发到生产的更改 例如某些内容类型模型中的更改 的推荐方法是什么 我正在使用这个设置 我有带有开发 postgres 数据库的开发实例 在生产中 我有 3 个 Strapi 实例 同时服务 api 和 admin 使用
  • 在 (ubuntu) linux 中捕获第二个键盘输入

    我编写了一个从 USB 第二个键盘 实际上是条形码扫描仪 获取输入的程序 问题是 如果另一个窗口处于活动状态 则数据会在那里输入 而不是在我的程序中输入 有人可以就我做错的事情给我建议吗 include
  • Google App Engine 有效负载对象

    如何在Python中的任务有效负载中发送类对象 我想在任务的参数中发送一个对象 当我使用simplejson 我收到错误 Object is not serializable 当我使用pickle时 我得到KeyValue Error 这个
  • self.presentingViewController 返回 UITabBarController 而不是使用presentModalViewController 推送它的视图控制器

    我有一个tab基于应用程序 中的一个views其中正在推动一个modal view controller 如果我打电话self presentingViewController在一个modal view controller 它返回tab
  • 在 Xcode 中查看 NSData 内容

    我正在运行 Xcode 我想转储 NSData 有问题的变量是缓冲区 有没有办法通过 UI 或 GDB 调试器来做到这一点 Edit 我已将笔记移至答案中 从来没有人正确回答过这个问题 两年后 我想是时候换一个了 假设你的代码中有 NSDa
  • 为什么 window.location.search 为空?

    If I console log window location 我明白了 Location replace function assign function ancestorOrigins DOMStringList origin htt
  • “skip.header.line.count”=“1”在 SparkSession 的 Hive 中不起作用

    我正在尝试使用 SparkSession 将 CSV 数据加载到 Hive 表中 我想在加载到配置单元表时跳过标题数据 并且设置 tblproperties skip header line count 1 也不起作用 我正在使用以下代码
  • 更改 url 中的主机名

    我正在尝试使用 python 更改 url 中的主机名 并且已经使用 urlparse 模块有一段时间了 但没有找到令人满意的解决方案 举个例子 考虑一下 url https www google dk 80 barbaz https ww
  • 使用 Json.Net 序列化哈希表

    我有一个哈希表 其键为整数类型 但是当使用 json net 反序列化时 键以字符串形式返回 有没有办法使用 json net 序列化 反序列化将键类型保留在哈希表上 该哈希表是 MyType 类型的属性 var settings new
  • Facebook 分享按钮

    如何获取 Facebook 分享按钮 现在他们没有显示获取代码 首先在标签中定义一些属性 如下所示 gt xmlns http www w3 org 1999 xhtml gt xmlns fb http www facebook com
  • 如何在chart.js中应用渐变颜色?

    我正在使用 Chart js 库制作折线图 在这里我想将线条的颜色更改为渐变颜色 我试过的代码 const gradientFill ctx createLinearGradient 500 0 100 0 gradientFill add
  • Swift 中的 UserDefaults 让人疯狂[UI]

    当我开始接触 Swift 和 SwiftUI 时 我发现从 UIKit 迁移的过程非常困难 即使在尝试理解我在网上找到的许多教程之后 目前仍被 UserDefaults 所困扰 请告诉我我在这里做错了什么 非常简单的代码 将 bool 值注