【问题标题】:Swiftui: how do you assign the value in a "String?" object to a "String" object?Swiftui:如何在“字符串”中分配值?对象到“字符串”对象?
【发布时间】:2021-06-10 07:11:05
【问题描述】:

Swiftui 字典的特点是使用键访问返回的值始终是“可选”类型。例如,具有 String 类型键和 String 类型值的字典很难访问,因为每个返回值都是可选类型。

一个明显的需要是将 x=myDictionary[key] 分配给您尝试将字典“值”的字符串放入字符串变量 x 的位置。

这很棘手,因为字符串值总是作为可选字符串返回,通常标识为字符串类型?

那么如何将字典访问返回的 String?-type 值转换为可以分配给普通 String-type 变量的普通 String-type 呢?

我想问题是没有办法确定键是否存在字典值。用于访问字典的键可以是任何东西,所以你必须以某种方式处理它。

【问题讨论】:

  • 如果你在 SO 中搜索错误,你会发现很多问题都可以回答这个问题

标签: dictionary optional


【解决方案1】:

正如@jnpdx 对这个 SO 问题的回答 (How do you assign a String?-type object to a String-type variable?) 中所述,至少有三种方法可以转换字符串?到一个字符串:

import SwiftUI

var x: Double? = 6.0
var a = 2.0

if x != nil {
    a = x!
}

if let b = x {
    a = x!
}

a = x ?? 0.0

两个关键概念:

  1. 检查可选项是否为 nil
  2. 如果 optional 不等于 nil,则继续

在上面的第一个方法中,“if x != nil”显式检查以确保在闭包执行之前 x 不是 nil。

在上面的第二种方法中,只要 b 不等于 nil,“if let a = b”就会执行闭包。

在上面的第三种方法中,“nil-coalescing”运算符??受雇。如果 x=nil,那么 ?? 之后的默认值分配给a。

以上代码将在操场上运行。

除了上述三种方法之外,至少还有一种使用“guard let”的方法,但我不确定语法。

相信以上三种方法也适用于String以外的变量?和字符串。

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 2015-12-24
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多