は、だから私は2つのプロパティ(List<T>
ように振る舞う)Results
と呼ばれるレルムのカスタムコンテナ型だアレイと一つだ1で働いている:いずれの場合もSwiftでは、オプションではないプロパティを宣言しても初期化は保証されません。
var rowHeights: [CGFloat?]!
var myResults: Results<ChildObject>!
、私は、世界的にそれらを宣言する必要がありますそして、私は技術的には、限りスウィフトが懸念しているように、初期化が保証されないことを意味し、viewWillAppear()
に後でそれらを初期化することができます。
override func viewWillAppear(_ animated: Bool) {
...
myResults = myParentObject.children.sorted(byKeyPath: "childPath", ascending: true)
...
rowHeights = Array(repeating: nil, count: myParentObject.children.count)
...
}
私の質問は以下のとおりです。
- これらのプロパティを明示的に宣言すると、すべてのリソースが占有されますか?
- 初期化の構文/アプローチは正しいですか(特に配列を使用していますか?)
私の本では、「なぜOptionals」を参照してください:http://www.apeth.com/swiftBook/ch03.html#_why_optionalsそれはOptionalsが有用であり、あなたがそれらの_both_でOptionalsを使用する理由の二つの理由を与えますあなたのコードの方法。 – matt
私は、初期化を構成するものについて尋ねる第3の質問を追加することを熟考しましたが、それがなくても洞察力を提供しました。ありがとう。私の場合、実際には "var optionals"という宣言はありますか? '!'はそれらを非オプションにしませんか?私はこれが他の何よりも素早い用語を知っている/理解することの問題であると思います。 – Foefirelord