该问题的大多数简化版本可以通过代码表示:
struct Outer {
class Person {
var name:String?
}
let member = Person()
}
引发编译错误:无法构造Outer.Person,因为它没有可访问的初始值设定项。
有关为什么不编译的任何提示?
可能的解决方法(任何一个都将消除编译错误):
作为观察,如果类是本地的,属于func:
func checkPerson() {
class Person {
var name:String?
}
let member:Person = Person()
// Still throws compile error
}
对于这种情况,解决方法nr 1.(将初始值设置为nil)是唯一一个删除编译错误的方法。
我正在使用Xcode 6.2,OS X Yosemite 10.10.2
答案 0 :(得分:3)
在 XCode 6.2(Swift 1.1)中,您的Person
课程中没有包含任何init()
方法。
更改以下代码:
struct Outer {
class Person {
var name:String?
init(){}
}
let member = Person()
}
似乎Apple已经在 XCode 6.3 beta(Swift 1.2)中解决了这个问题,它不会显示编译错误,即使您执行以下操作:
struct Outer {
class Person {
var name:String?
}
let member = Person()
}