#ios #swift #xcode
#iOS #swift #xcode
Вопрос:
Мне нужна помощь в удалении строки в основных данных
схема:
у меня есть табличное представление, которое заполняется из формы, которая просит пользователя ввести сведения о друге.
Пользователю нужна опция удаления друга из списка. когда пользователь нажимает на строку из табличного представления, мне нужно получить доступ к строке, чтобы получить идентификатор, а затем запросить основные данные для этого идентификатора, а затем удалить его.
Я застрял при доступе к данным, на которые нажимает пользователь, и получении идентификатора
вот как выглядит друг в табличном представлении
12345 James Bond 19 Male Sydney ICT
где 12345 — уникальный номер учащегося
это моя функция для удаления друга из core data
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
tableView.delegate = self
tableView.dataSource = self
let appDelegate = UIApplication.shared.delegate as! AppDelegate
friends = appDelegate.getFriendInfo()
self.tableView.rowHeight = 33.0
}
}
У меня возникают трудности с получением идентификатора в строке, а затем удалением этой строки из основных данных
Комментарии:
1. Почему вы не делаете
friends[indexPath.row].id
, чтобы получить идентификатор?2. потому что, как только я удалю 1, строки в основных данных больше не будут соответствовать идентификатору строки в табличном представлении
3. @JoakimDanielson например, скажем, что мои основные данные равны 1,2,3, а мое табличное представление равно 1,2,3, скажем, я удаляю 2 из основных данных, мой tableview станет 1,2, а не 1,3
4. Это не идентификатор строки (такого понятия не существует), это свойство id объекта Friend с номером строки
indexPath.row
. И, конечно, это должен быть StudentID вместо id, извините за это.5. Извините, я не совсем понимаю, что это буквально, когда я впервые использую swift. В состоянии ли вы написать ответ?
Ответ №1:
Извлеките идентификатор из массива, используя заданный indexPath
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let id = friends[indexPath.row].studentID
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.removeRecord(id: id)
}