gpt4 book ai didi

ios - 当 View Controller 中的可选变量为 时,这意味着什么?

转载 作者:行者123 更新时间:2023-12-01 16:05:17 25 4
gpt4 key购买 nike

我有一个 View Controller ,显示我的“技能组”实体的详细信息。我想用它来查看和编辑/创建“技能组”。因此,我有一个可选的变量 SkillGroup,它要么未设置,要么在您第一次创建 SkillGroup 和保存它之前为零,或者它已设置,您只需查看 SkillGroup。这是我的代码

class GroupViewController:UIViewController { 

var skillGroup: SkillGroup?
override func viewDidLoad() {
super.viewDidLoad()
if let skillGroup = skillGroup {
self.title = skillGroup.name
}
}
}
在之前的 View Controller 中:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "createGroupSegue" {
let destination = segue.destination as? GroupViewController
destination?.createOrEdit = true
}
if segue.identifier == "showGroupSegue" {
if let selectedGroupPath = self.groupsTableView.indexPathForSelectedRow {
let destination = segue.destination as? GroupViewController
destination?.createOrEdit = false
let group = groups[selectedGroupPath.row]
destination?.skillGroup = group
}
}
}
如果我在调用 super 后立即设置断点,并检查 SkillGroup,它会显示 <uninitialized> .我不认为这是因为它的“nil”就像一个尚未设置的普通可选变量。此外,我确实在准备转场代码中设置了 SkillGroup 变量。
我真的找不到很多关于什么意思的信息。有人可以帮我吗?

最佳答案

我认为您正在调试器中检查错误的变量(局部变量而不是实例变量)。
我做了一个快速示例:

class ViewController: UIViewController {
public class TestClass {
var foo: String
var bar: Int

init() {
foo = "foo"
bar = 4711
}
}

public var test: TestClass?

override func viewDidLoad() {
super.viewDidLoad()

test = TestClass()

if let test = test {
print(test.foo)
}
}
}
当我在行 if let test = test { 上设置断点时我将在调试器中看到以下内容:
debugger
在这里你可以看到它会打印 <uninitialized>当我打印本地的描述时 test变量是因为 let该行上的语句尚未执行。
请注意,有一个局部变量(仅存在于 if 范围内)和一个实例变量。在调试器中,当您展开 self 时,您将看到实例变量。节点。

关于ios - 当 View Controller 中的可选变量为 <uninitialized> 时,这意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62823376/

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