Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift可选属性错误_Swift_Ios8 - Fatal编程技术网

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() {

    }
}