“0”在 swift 中不可转换为 BackgroundView
"0" is not convertible to BackgroundView in swift
我有这个 class 方法,我在我的视图控制器中调用这个方法
class func initWithNewFrame(var frame : CGRect?)
{
if let newFrame = frame
{
var backgroundView : BackgroundView = BackgroundView(frame: newFrame)
}
}
我打电话给
var frameNew : CGRect = CGRectMake(self.view.frame.origin.x,
self.view.frame.origin.y,
self.view.frame.size.width,
self.view.frame.size.height)
self.gradientView = BackgroundView.initWithNewFrame(frameNew)
我得到这个错误“0”在 swift 中无法转换为 BackgroundView
,
请解决此问题并提前致谢。
原因:
错误来自这里:self.gradientView = BackgroundView.initWithNewFrame(frameNew)
您为 self.gradientView
分配 initWithNewFrame
的 return 值,但在您的代码中,initWithNewFrame
没有 return 值。
在Swift中,没有return值意味着return一个空元组。所以你得到了““0” is not convertible to BackgroundView”错误,因为你想用一个空元组分配一个 BackgroundView
。
也许这是您期望的方法:
class func initWithNewFrame(var frame : CGRect?) -> BackgroundView?
{
var backgroundView : BackgroundView? = nil
if let newFrame = frame
{
backgroundView = BackgroundView(frame: newFrame)
}
return backgroundView
}
更新:
如果你想为 class BackgroundView
创建一个自定义初始化器,试试这个:
convenience init(var frame : CGRect?) {
if let newFrame = frame
{
self.init(newFrame )
}
// Do custom thing
}
我有这个 class 方法,我在我的视图控制器中调用这个方法
class func initWithNewFrame(var frame : CGRect?)
{
if let newFrame = frame
{
var backgroundView : BackgroundView = BackgroundView(frame: newFrame)
}
}
我打电话给
var frameNew : CGRect = CGRectMake(self.view.frame.origin.x,
self.view.frame.origin.y,
self.view.frame.size.width,
self.view.frame.size.height)
self.gradientView = BackgroundView.initWithNewFrame(frameNew)
我得到这个错误“0”在 swift 中无法转换为 BackgroundView , 请解决此问题并提前致谢。
原因:
错误来自这里:self.gradientView = BackgroundView.initWithNewFrame(frameNew)
您为 self.gradientView
分配 initWithNewFrame
的 return 值,但在您的代码中,initWithNewFrame
没有 return 值。
在Swift中,没有return值意味着return一个空元组。所以你得到了““0” is not convertible to BackgroundView”错误,因为你想用一个空元组分配一个 BackgroundView
。
也许这是您期望的方法:
class func initWithNewFrame(var frame : CGRect?) -> BackgroundView?
{
var backgroundView : BackgroundView? = nil
if let newFrame = frame
{
backgroundView = BackgroundView(frame: newFrame)
}
return backgroundView
}
更新:
如果你想为 class BackgroundView
创建一个自定义初始化器,试试这个:
convenience init(var frame : CGRect?) {
if let newFrame = frame
{
self.init(newFrame )
}
// Do custom thing
}