gpt4 book ai didi

Swift 可选属性错误

转载 作者:行者123 更新时间:2023-11-28 09:20:43 25 4
gpt4 key购买 nike

我有一个这样定义的类:

class User {

var name : String?
}

我使用代码在我的 ViewController 中使用它:

import UIKit

class ViewController: UIViewController {

let user : User = User()
}

编译错误

User is not constructible with ()

我知道 Swift 中的属性必须有一个默认值,但是可选的有一个(nil)。如果我将属性“name”初始化为 nil 或添加一个 init() 初始值设定项,错误就会消失。但是我不明白为什么默认情况下我的可选值不为零。

顺便说一句,playground 中的以下代码可以完美编译:

class ViewController: UIViewController {

let user : User = User()
}

class User {

var name : String?
}
let vc = ViewController()

这很奇怪。

这个问题与this有关但我不明白那里的答案(为什么可选在 Playground 上有默认值但在应用程序中没有?)。

编辑:仅当用户类在单独的文件中定义时才会发生错误。 XCode 是 Beta 3(见图片)

XCode Versione

User class file

view controller file

最佳答案

您应该提交错误报告——这绝对是编译器的不正确行为。当您尝试以这种方式进行初始化时,您使用的是默认初始化程序 -- Apple's documentation状态:

Swift provides a default initializer for any structure or base class that provides default values for all of its properties and does not provide at least one initializer itself. The default initializer simply creates a new instance with all of its properties set to their default values.

然后显示这个例子:

class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
}
var item = ShoppingListItem()

然后在下面的段落中说:

... (The name property is an optional String property, and so it automatically receives a default value of nil, even though this value is not written in the code.) ...

关于Swift 可选属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24807074/

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