作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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 {
上设置断点时我将在调试器中看到以下内容:
<uninitialized>
当我打印本地的描述时
test
变量是因为
let
该行上的语句尚未执行。
if
范围内)和一个实例变量。在调试器中,当您展开
self
时,您将看到实例变量。节点。
关于ios - 当 View Controller 中的可选变量为 <uninitialized> 时,这意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62823376/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!