Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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_Init - Fatal编程技术网

Swift 使用函数初始化结构值

Swift 使用函数初始化结构值,swift,init,Swift,Init,我有一个Swift结构,它有一个title属性。在我的初始值设定项中,我可以将属性设置为正常。但是,如果我想将其值的逻辑提取到另一个函数,我会得到一个编译器警告 这项工作: init(document: MyDocument) { documentIdentifier = document.documentIdentifier createDate = document.createDate title = "A Title" } 这失败了: title = g

我有一个Swift结构,它有一个
title
属性。在我的初始值设定项中,我可以将属性设置为正常。但是,如果我想将其值的逻辑提取到另一个函数,我会得到一个编译器警告

这项工作:

init(document: MyDocument) {
    documentIdentifier = document.documentIdentifier
    createDate = document.createDate
    title = "A Title"
}
这失败了:

    title = generateTitle(forDocument: document)

编译器在初始化前使用变量“self.title”。如果我在这条线上放置一个静态设置器,错误就会消失。我的generate函数返回一个非可选值。编译器的抱怨是什么?

generateTile
是一个实例方法,但在初始化器返回之前,实例本身还没有创建,因此您无法对其调用任何方法。如果您真的想将
title
的设置代码提取到一个单独的方法中,并且您实际上没有从该方法访问任何实例属性,那么您可以将其设置为
static
,甚至可以从
init

访问。当然,谢谢!一条更有用的错误信息会让我更容易意识到我的错误。