Удаление из массива словарей по indexPath.row


#1

Всем привет! Застрял на удаление из TableView по indexPath.row. Есть массив словарей,который я получаю из json и вывожу в таблицу.

    var nameUID =  [["name": "Ассия Колоскова", "uid": "124"], ["name": "nihhon jin", "uid": "317"], ["name": "Alina Hoffman", "uid": "272"]]
    let index = nameUID!.index(where: { dict in
        guard let value = dict["name"] else { return false }
        //return value == (friendsList?.friends![indexPath.row].user!.name)! 
        //вывожу данные в TablView из этой модели.
        //Пытаюсь сравнить модель из которой вывожу данные с var nameUID
        //и при совпадении по имени удалить
        return value == "Ассия Колоскова"
    })
    
    
    if let index = index {
        nameUID!.remove(at: index)
    }
    print(newArrOfFriends)

#2

Как у Вас отрабатывает Ваш код? Или в чем проблема?


#3

Вообщем решил таким способом

 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        var nameUID = UserDefaultsHelper.getArrayOfFriends()//это мой массив словарей, из которого нужно удалять
        
        let index = nameUID!.index(where: { dict in
            guard let value = dict["name"]
                else { return false }
            return value != (friendsList?.friends![indexPath.row].user!.name)!
        })
        if let index = index {
            nameUID!.remove(at: index)
            friendsList?.friends?.remove(at: index)
            tableView.reloadData()
        }
        
        UserDefaultsHelper.setArrayOfFriends(arr: nameUID!) //пересохраняю  в UserDefaults после удаления
}
}

#4

сначала удалялся не тот элемент, потом падало приложение, но проблема была в

     self.tableView.beginUpdates()
   self.tableView.deleteRows(at: [indexPath], with: .automatic)
   self.tableView.endUpdates() //после endUpdates был крэш