gpt4 book ai didi

ios - 未指定数据类型时 Swift 变量为 nil

转载 作者:可可西里 更新时间:2023-11-01 02:02:14 27 4
gpt4 key购买 nike

下一行中的jsonString为nil

 let jsonString = try? String(contentsOf: URL(fileURLWithPath:currentMedia?.rawDataFile ?? ""))

当在下面的代码中指定数据类型时,jsonString 不是 nil 而是有一个值:

 let jsonString:String = try? String(contentsOf: URL(fileURLWithPath:currentMedia?.rawDataFile ?? ""))

虽然问题出在第一行

try? String(contentsOf: URL(fileURLWithPath:currentMedia?.rawDataFile ?? ""))

被评估为非空字符串值,但 nil 被分配给 jsonString。当显式类型 String 用于 jsonString 时,期望的非空值被分配给 jsonString。我需要帮助来理解这种行为。

最佳答案

如果你不明确地告诉它,Swift 可以确定类型。

在下面的情况 (1) 中,Swift 计算出类型,因为它不是显式的。这种情况下的类型是String?可以为零。

// 1
let jsonString = try? String(contentsOf: URL(fileURLWithPath: urlString ?? ""))

在示例 2 中,类型是显式的 (String)。 = 右边的表达式结果为 String 类型?不能分配给字符串类型的变量。

// 2
let jsonString2: String = try? String(contentsOf: URL(fileURLWithPath: urlString ?? ""))

此外,

// this won't compile
let xstring: String = nil

// no value supplied so it is nil
let xstring2: String?

// no value supplied so it is nil (same as above)
let xstring3: String? = nil

关于ios - 未指定数据类型时 Swift 变量为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45530373/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com