swift 3 - как сильно ударить ячейку просмотра таблицы?

import UIKit

class PartiesTableViewController: UITableViewController
{
    let cellIdentifier = "partyCell"
    var parties: [Party]?
    let persistence = Persistence()
    let dateFormatter = DateFormatter()

    override func viewDidLoad()
    {
        super.viewDidLoad()

        tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier)

        dateFormatter.dateStyle = DateFormatter.Style.short
        dateFormatter.timeStyle = DateFormatter.Style.short

        print("PartiesTableViewController.viewDidLoad() begins")
    }

    override func viewDidAppear(_ animated: Bool)
    {
        parties = persistence.fetchParties()

        tableView.reloadData()
    }

    //UITableViewDataSource
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return parties?.count ?? 0
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        print("PartiesTableViewController.tableView() begins")
        let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath)

        if let parties = parties
        {
            let party = parties[indexPath.row]

            print("partyname = \(party.name) \(party.startDate)")

            let strDate = dateFormatter.string(from: party.startDate)

            cell.textLabel?.text = "\(party.name) - \(strDate)"
        }

        return cell
    }

    //UITableViewDelegate - delete
    override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath)
    {
        if(editingStyle == UITableViewCellEditingStyle.delete)
        {
            parties.remove(at: indexPath.row)
        }
    }
}

Я очень новичок в разработке для iOS, и это мой первый проект списка задач. Я пытался провести пальцем удалить данные ячейки таблицы с экрана. Но то, как я это сделал, кажется неправильным. Может ли кто-нибудь помочь мне реализовать метод удаления клеток, пожалуйста? Последняя линия parties.remove(at: indexPath.row) выдает ошибку:

"Значение типа '[Сторона]?' не имеет члена 'удалить'

2 ответа

Вы должны развернуть parties необязательный. Вам также придется перезагрузить таблицу после изменения массива сторон.

parties?.remove(at: indexPath.row)
tableView.reloadData()

Для получения дополнительной информации об опциях: https://developer.apple.com/reference/swift/optional

+ Изменить

parties.remove(at: indexPath.row)

в

parties?.remove(at: indexPath.row)
Другие вопросы по тегам