Objective-Cでは、次のように書いています。
@property (nonatomic, strong) NSMutableArray *privateArray;
if (!self.privateArray) {
// Populate the privateArray
}
配列がまだチェックしていないことを確認するそれを設定する前に存在します。これはSwiftでどのように達成できますか? 私はObj-Cコードを翻訳して実装しようとしましたが、 "単体演算子"というXcodeエラーが発生しました! "" [AnyObject] "のオペランドには適用できません"
迅速な試み:
private var privateArray: [AnyObject]?
if !privateArray {
// Populate the array
}
Swiftでアレイを作成する前にアレイが存在するかどうかを確認するにはどうすればよいですか? 使用するだけで簡単ですか? .isEmpty
アレイで?
前もって感謝します!
回答:
回答№1の場合は3Objective-Cでは、これを遅延ロードと呼びます。プロパティを宣言しますが、最初にアクセスされたときにのみプロパティを作成します。
あなたが落ちたトラップは、SwiftがObjective-Cのまったく異なる構文にすぎないと考えています。
スウィフトでは、怠惰なvarを持つことができます...
あなたはこれを次のように宣言することができます...
@lazy var someArray: [String] = {
return ["Hello", "World"]
}
これはあなたが望むことをするでしょう。
副メモとして。一般的には使用することをお勧めしません AnyObject
特に、配列に含まれるオブジェクトの型を知っている場合は特にそうです。
また、この方法を使用することで、配列をオプションにする必要がなくなり、アンラッピングすることを避けることができます。
遅延プロパティについては、グーグルで読むことができます。私はこれを見つけ、それはかなり良いように見える... http://mikebuss.com/2014/06/22/lazy-initialization-swift/
回答№2の場合は0
あなたは次のように書くべきです:
if (privateArray == nil) {
// Populate the array
}