anArray.contains(nil)
のようなものはうまくいくと思っていましたが、そうではありません。Swiftコレクションタイプでnilをチェックする最良の方法
extension Array {
func containsNil() -> Bool {
return self.filter({ $0 == nil }).count > 0
}
}
その他の思考:
私ができる最善のは、このような拡張機能を作成するのですか?
anArray.contains(nil)
のようなものはうまくいくと思っていましたが、そうではありません。Swiftコレクションタイプでnilをチェックする最良の方法
extension Array {
func containsNil() -> Bool {
return self.filter({ $0 == nil }).count > 0
}
}
その他の思考:
私ができる最善のは、このような拡張機能を作成するのですか?
あなたは、nil
要素の数をカウントするには、常にすべての要素を調べなければなりません。また、カウントが0より大きい場合は戻ります。必要以上に多くの情報を収集しています。あなたは無数の要素の数を使用していないようです。配列内にnilがある場合は気にするだけです。
代わりに、単純に配列全体を反復することができ、初めてnil
が見つかるとtrueを返します。
はい、私は認識していますが、それ以上のコード行が必要です。私はそれを避けたかった。 – BridgeTheGap
本当に短くしたいならば、 '.contains {$ 0 == nil}'とするだけです。しかし、あなたの質問のコメントを最初にチェックしてください。 nhgrifが述べたように、おそらくXY問題です。 – Eendje
「nil」が含まれているとしたらどうしますか? – Eendje
あなたのユースケースは何ですか?オプションを含むことができる配列だけが 'nil'を含むことができます。 'nil'値から保護したいですか?もしそうなら、配列を平坦化するだけです: 'let vals:[Int?] = [1,2,3、nil]; let flat = vals.flatMap {$ 0} as [Int?]; ' – JAL
これはユースケースを尋ねる2つのコメントがある理由は、これがほぼ確実に[XY問題](http:// meta。 stackexchange.com/q/66377/244435)。 – nhgrif