Swift可选属性错误
我有一个这样定义的类:Swift可选属性错误,swift,ios8,Swift,Ios8,我有一个这样定义的类: class User { var name : String? } 我使用以下代码在我的ViewController中使用它: import UIKit class ViewController: UIViewController { let user : User = User() } 我有编译错误 无法使用()构造用户 我知道Swift中的属性必须有一个默认值,但可选属性有一个(nil)。如果我将属性“name”初始化为nil或添加init(
class User {
var name : String?
}
我使用以下代码在我的ViewController中使用它:
import UIKit
class ViewController: UIViewController {
let user : User = User()
}
我有编译错误
无法使用()构造用户
我知道Swift中的属性必须有一个默认值,但可选属性有一个(nil)。如果我将属性“name”初始化为nil或添加init()初始值设定项,错误将消失。但我不明白为什么我的可选项在默认情况下没有为零
顺便说一下,Playway中的以下代码编译得非常完美:
class ViewController: UIViewController {
let user : User = User()
}
class User {
var name : String?
}
let vc = ViewController()
这很奇怪
这个问题与相关,但我不明白答案(为什么可选选项在游乐场中有默认值,但在应用程序中没有?)
编辑:只有在单独的文件中定义了用户类时,才会发生错误。XCode是Beta 3(参见图片)
您应该提交一份错误报告——这绝对是编译器的错误行为。当您尝试以这种方式初始化时,您使用的是默认初始值设定项--状态: Swift为任何结构或基类提供默认初始值设定项 为其所有属性提供默认值,但不 至少提供一个初始值设定项本身。默认初始值设定项 只需创建一个新实例,并将其所有属性设置为 默认值 然后显示此示例:
class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
}
var item = ShoppingListItem()
然后在下面的一段中说:
。。。(name
属性是可选的String
属性,因此
自动接收默认值nil
,即使
值未写入代码中。)
我使用Xcode 6 beta 3在iOS应用程序中尝试了你的代码,它编译并运行良好 代码是相同的:
class User {
var name : String?
}
class ViewController: UIViewController {
let user : User = User()
override func viewDidLoad() {
super.viewDidLoad()
}
}
如果我在这一行设置断点:
let user : User = User()
它按预期停止
你在用beta 3吗?您是否仔细检查了您的代码,以确保它确实是您在此处发布的内容?如果您希望编译它,您可以这样编写您的用户类,这可能并不理想,但似乎可以在
这个错误在我这方面没有出现。我已经编译了这个项目,没有进一步的问题。你在我编辑的截图中尝试过这个项目吗?错误也出现在当前的XCode 6.0 GM(6A313),Swift版本1.0:-(是的,我使用的是Beta 3。我认为您的代码工作正常,因为这两个类在同一个源文件中。请参阅我的编辑。我尝试了github的代码,实际上它没有编译。唯一的方法是显式添加一个空的初始值设定项或将变量初始化为
nil
。我认为这肯定是一个错误。谢谢,我的意见也是我的。)这是当前betaor:class用户{var name:String?=nil}的错误
class User {
var name : String?
init() {
}
}