私はSwiftの学習中に問題が発生しました。いくつかの変数を持つクラスがありますが、[CGColor]の配列を返して、UIViewでさまざまな背景グラデーションを作成したいと考えました。コードの配列を返す適切な方法とnilでない場合のチェック
一部は:それは私が空の文字列を割り当て、その後はnilかどう
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は、okです。
(...)
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)])
を私はXXXクラスからbackgroundGradientを割り当てようとのviewDidLoad()で私のメインのViewControllerファイルに問題があります
(...)
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で復帰する必要があります。文字列、intなどの他のすべての変数は、魅力のように動作しますが、配列は問題です。
。 – dan
@danだからXxx()は空のbackgroundGradient配列を作成しますか?しかし、classXxx = Xxx()を作成せずにbackgroundGradientを取得することはできますか?あなたは助けて問題を解決できますか? – codddeer123