実現したいこと
onDelete時に対象外のものが削除されるのを解消したい。
前提
削除APIはid(uuid)を受け取るようにしています。
発生している問題・エラーメッセージ
削除対象外のものが削除されている。
該当のソースコード
抜粋しています。
Swift
1func delete(offsets: IndexSet) { 2 let contactId = self.contact[offsets.first!].contact_id 3 deleteAPI(contactId: contactId) 4 self.contact.remove(atOffsets: offsets) 5 }
Swift
1var body: some View { 2 VStack{ 3 NavigationView{ 4 ScrollViewReader { scrollProxy in 5 ZStack { 6 List{ 7 ForEach(kanadata, id: \.self) { kana in 8 let filteredContact = contact.sorted(by: { $0.first_name_kana < $1.first_name_kana }).filter { 9 let first_name_kana = $0.first_name_kana 10 let first_name_kana_prefix = String(first_name_kana.prefix(1)) 11 if let index = kana_table.firstIndex(where: { $0[0].hasPrefix(first_name_kana_prefix) }) { 12 return kana == kana_table[index][1] 13 } 14 return first_name_kana.hasPrefix(kana) 15 } 16 if !filteredContact.isEmpty { 17 Section(header: Text("\(kana)").id(kana)) { 18 ForEach(filteredContact.sorted(by: { $0.first_name_kana < $1.first_name_kana }), id: \.contact_id) {item in 19 VStack { 20 NavigationLink(destination: ContactView(contactId: item.contact_id)){ 21 EmptyView() 22 } 23 .opacity(0) 24 HStack{ 25 Text(item.first_name) 26 Text(item.last_name) 27 Spacer() 28 } 29 } 30 }.onDelete (perform: delete)
Swift
1func deleteAPI(contactId: UUID) { 2 3 print("deletecontact api") 4 let baseURL = UserDefaults.standard.string(forKey: "baseURL") 5 let url = URL(string: "\(baseURL!)/contacts/\(contactId)")! 6 ............................ 7}
試したこと
下記コードが怪しそうでしたので色々修正してみましたが、上手くいきませんでした。
Swift
1let contactId = self.contact[offsets.first!].contact_id
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー