这是我的代码:
page.select("Patient ##{@patient.id}", from: 'clinical_event_patient_id')
然而,编译器告诉我:“类VC1没有初始化器”
根据Apple Swift iBook中的快速示例,他们就是这样做的例子:
import Cocoa
class VC1: NSViewController {
let aFunctionVar ()->Void
}
但在我的情况下,我正在尝试创建一个属性变量。目前还不知道变量是什么,所以我无法在那里设置它。有什么帮助吗?
编辑 - 我已经知道如何使变量成为可选和懒惰的简单字符串/数组/字典类型等。但这是一个函数类型的属性变量。它意味着保存var mathFunction: (Int, Int) -> Int = addTwoInts
类型的函数。有关如何做到这一点的任何帮助?
在objectiveC中,可以通过创建这样的块属性来完成:
()->Void
答案 0 :(得分:0)
如果在设置对象后知道该值,则可以使用惰性变量:
class LazyTester {
lazy var someLazyString: String = {
return "So sleepy"
}()
}
var myLazyTester = LazyTester()
myLazyTester.someLazyString
编译器正在为您提供该错误,因为您正在定义一个强制存储变量projectLaunchData
,但没有给它一个值。如果您在初始化时知道变量值,则可以在初始化时设置它。
答案 1 :(得分:0)
将projectLaunchData
声明为可选var
:
import Cocoa
class VC1: NSViewController {
var projectLaunchData: (()->Void)?
}
然后您可以稍后指定一个值:
func test() {
print("this works")
}
let myVC = VC1()
// assign the function
myVC.projectLaunchData = test
// Call the function using optional chaining. This will safely do nothing
// if projectLaunchData is nil, and call the function if it has been assigned.
// If the function returns a value, it will then be optional because it was
// called with the optional chaining syntax.
myVC.projectLaunchData?()