Swift の配列ですべての nil 要素を削除するにはどうすればよいですか?
2023-08-30 14:31:03
質問
基本的な方法がうまくいきません。
for index in 0 ..< list.count {
if list[index] == nil {
list.removeAtIndex(index) //this will cause array index out of range
}
}
どのように解決するのですか?
あなたのコードの問題点は
0 ..< list.count
がループの最初で一度実行され、その後
list
がまだすべての要素を持っているときに実行される。要素を一つ削除するたびに
list.count
はデクリメントされますが、反復範囲は変更されません。結局、読みすぎてしまうのです。
Swift 4.1以上では、以下のように
compactMap
を破棄するために
nil
の要素を破棄する。
compactMap
は任意でない値の配列を返す。
let list: [Foo?] = ...
let nonNilElements = list.compactMap { $0 }
それでもオプションの配列が必要な場合は
filter
を削除して
nil
要素を削除します。
list = list.filter { $0 != nil }
関連
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] ある要素が配列に含まれているかどうかを確認する方法
-
[解決済み] NSOperationとGrand Central Dispatchの比較
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み】Swiftで配列から重複する要素を削除する
-
[解決済み】String.substringWithRangeはどのように使うのですか?(または、SwiftでRangeはどのように動作しますか?)
-
[解決済み] Swift Array - インデックスが存在するかどうかをチェックする
-
[解決済み] Swift: 配列の全要素を削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
iOSコンパイルポッドでエラー CocoaPods could not find compatible versions for pod "XXXXX" が報告される。
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] iOS Simulatorでネットワークを無効にすることは可能ですか?
-
[解決済み] インポート vs #インポート - iOS 7
-
[解決済み] UIImageのサイズを変更する最も簡単な方法?