我在學習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