我在学习Swift时遇到了问题。我已经有了几个变量的类,但是我想返回[CGColor]的数组以在UIView中创建不同的背景渐变。代码正确的返回数组的方法并检查是否不为零
部分:
class Xxx{
var _output : String!
var _backgroundGradient : [CGColor]!
//checking if not nil
var output : String!{
if _output == nil{
_output = ""
}
return _output
}
var backgroundGradient : [CGColor]{
if _backgroundGradient?.isEmpty == false{
print("There are objects!")
} else{
print("There are no objects")
_backgroundGradient = [CGColor]()
}
return _backgroundGradient
}
因此,大家可以看到_output是确定的,如果它是零,然后我给你空字符串。我试图做类似的事情与数组,如果它是空的,则创建空数组,但不是零
代码进一步有功能,附加一定的价值:
(...)
self._backgroundGradient.append(UIColor(red:1.00, green:0.79, blue:0.04, alpha:1.00).cgColor)
self._backgroundGradient.append(UIColor(red:0.97, green:0.41, blue:0.02, alpha:1.00).cgColor)
print("GRADIENT inside func -> \(self._backgroundGradient)")
(...)
和我所看到的Xcode的底部控制台它的正确显示:
GRADIENT inside func -> Optional([<CGColor 0x6000000b1340> [<CGColorSpace 0x6000000359e0> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1; extended range)] (1 0.79 0.04 1), <CGColor 0x6080000b15e0> [<CGColorSpace 0x6000000359e0> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1; extended range)] (0.97 0.41 0.02 1)])
在viewDidLoad中(),当我尝试从xxx类分配backgroundGradient我的主视图控制器文件存在一个问题:
(...)
var classXxx : Xxx!
override func viewDidLoad() {
super.viewDidLoad()
classXxx = Xxx()
let gradient: CAGradientLayer = CAGradientLayer()
gradient.colors = classXxx.backgroundGradient
print("MainVC GRADIENT -> \(gradient.colors)")
(...)
和控制台输出:
MainVC GRADIENT -> Optional([])
的问题必须在VAR backgroundGradient回报。像string,int等其他变量就像一个魅力,数组是一个问题。
当你'演XXX()'你创建你的类的新实例与它自己的数组,它开始是空的。 – dan
@dan so Xxx()创建backgroundGradient数组,它是空的?但是,我可以检索backgroundGradient而不创建classXxx = Xxx()?你能帮忙解决问题吗? – codddeer123