iOSアプリをSwiftで実装している場合、いくつかの実装方法があり、お手軽に対処するためにGCD(Grand Central Dispatch)、DispatchGroup、DispatchSemaphoreを選択したのですが、以下のような【非同期処理の直列化】を行おうとした場合、処理途中で自由に処理をキャンセルできず(割り込めない)、結局、Foundation.Operation(NSOperation)で実装することとなりました。 キャンセル処理が出来ないことなんてあるのか?と思いますが、実際にキャンセル処理は処理完了時にしか出来ないようでした。
久しぶりに Swift で文字列検索処理を書こうとして、 index(of:) を使おうとしたら、思うような結果が得られず、ネットを検索しても新旧の情報が入り交じっていて、よく分からなかったので、まとめた。
配列の最初に一致したインデックス番号を取得
index(of:) → firstIndex(of:) メソッド名が変更されているようだが、結果を利用することができなかった。 文字列から文字を検索して、単純にインデックス番号が取得したかったのだが、そういうものではないらしい。 😂 Index とか Range とかの意味を整理する必要があって、数分で内容を理解して使用することができなかった。
文字列から文字を検索できるけど…
let str = "abcabc"
let firstIndex = str.firstIndex(of: "c")
print(type(of: firstIndex), firstIndex ?? 0)
出力結果 :
Optional Index(_rawBits: 131329)