Xcode12.2で新規プロジェクト生成時に「Use Core Data」にチェックを入れるとデフォルトでテンプレートコードが生成されますが、そのコードで理解できない部分があります。
swift
1 private func deleteItems(offsets: IndexSet) { 2 withAnimation { 3 offsets.map { items[$0] }.forEach(viewContext.delete) 4 5 do { 6 try viewContext.save() 7 } catch { 8 // Replace this implementation with code to handle the error appropriately. 9 // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 10 let nsError = error as NSError 11 fatalError("Unresolved error (nsError), (nsError.userInfo)") 12 } 13 } 14 }
ここで使われているforEachはArrayのインスタンスメソッドだと思われますが、なぜこの記述で良いのか理解できません。
Array.forEach()のリファレンスを見ると、引数は「シーケンスの要素をパラメーターとして受け取るクロージャ」とあります。
だとすると、
swift
1 offsets.map { items[$0] }.forEach{viewContext.delete($0)}
という記述なら納得できるのですが、(実際これでも動きます)
先のコードは、どのような記述ルールが適用されているのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/15 21:56