在 swift 的 UIViewController 中声明新对象时出错
error when declaring a new object in a UIViewController in swift
我创建了名为 MyHelper.swift 的文件
我在其中创建了 class:
public class MyHelper{
//..... variables here
public init(list listOfViews: [UIView]){
self.listOfViews = listOfViews
self.time = 1.0;
}
}
然后我像这样在 UIViewController 中声明了一个对象
class ViewController: UIViewController {
var myHelper: MyHelper;
override func viewDidAppear(animated: Bool) {
myHelper = MyHelper(listOfViewsToAnimatin: listOfViews)
}
// ..... rest of the code
}
但我收到错误消息:
**
Class "ViewController" has no initializers.
**
我尝试了 xcode 中建议的默认修复:
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
它导致了另一个错误。
然后我从互联网上尝试了这段代码:
required init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
它说:
Property self.myHelper not initialized at super.init call
我究竟如何在 UIViewController 中使用 MyHelper class 的对象!?
您正在初始化 viewDidAppear 中的 MyHelper。它需要在 init 中初始化(在 super.init() 之前)或者你需要将其声明为可选并设置为 nil。
var myHelper: MyHelper? = nil
您可以将 myHelper
设为可选:
var myHelper:MyHelper?
使用时,先解包:
if let myHelper = myHelper {
myHelper.yourFunction()
} else {
// self.myHelper == nil
}
或者您可以使用 !
:
解包
myHelper!.yourFunction()
但如果 myHelper 为 nil,它会崩溃。
这是Swift的编译时检查工作。
您需要在 init
方法中设置 MyHelper
,或者将其标记为可选(注意 var
声明末尾的问号):
class ViewController: UIViewController {
var myHelper: MyHelper?
required init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
myHelper = MyHelper(listOfViewsToAnimatin: listOfViews)
}
// ..... rest of the code
}
我创建了名为 MyHelper.swift 的文件 我在其中创建了 class:
public class MyHelper{
//..... variables here
public init(list listOfViews: [UIView]){
self.listOfViews = listOfViews
self.time = 1.0;
}
}
然后我像这样在 UIViewController 中声明了一个对象
class ViewController: UIViewController {
var myHelper: MyHelper;
override func viewDidAppear(animated: Bool) {
myHelper = MyHelper(listOfViewsToAnimatin: listOfViews)
}
// ..... rest of the code
}
但我收到错误消息:
**
Class "ViewController" has no initializers.
**
我尝试了 xcode 中建议的默认修复:
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
它导致了另一个错误。
然后我从互联网上尝试了这段代码:
required init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
它说:
Property self.myHelper not initialized at super.init call
我究竟如何在 UIViewController 中使用 MyHelper class 的对象!?
您正在初始化 viewDidAppear 中的 MyHelper。它需要在 init 中初始化(在 super.init() 之前)或者你需要将其声明为可选并设置为 nil。
var myHelper: MyHelper? = nil
您可以将 myHelper
设为可选:
var myHelper:MyHelper?
使用时,先解包:
if let myHelper = myHelper {
myHelper.yourFunction()
} else {
// self.myHelper == nil
}
或者您可以使用 !
:
myHelper!.yourFunction()
但如果 myHelper 为 nil,它会崩溃。
这是Swift的编译时检查工作。
您需要在 init
方法中设置 MyHelper
,或者将其标记为可选(注意 var
声明末尾的问号):
class ViewController: UIViewController {
var myHelper: MyHelper?
required init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
myHelper = MyHelper(listOfViewsToAnimatin: listOfViews)
}
// ..... rest of the code
}