Функция обратного вызова не перезагружает базу данных - PullRequest
0 голосов
/ 25 августа 2018

У меня есть приложение, в котором я храню и получаю данные из области. Я создал всплывающее окно, которое содержит текстовое поле для ввода данных, а также создал функцию обратного вызова, которую я использую для перезагрузки просмотра таблицы после нажатия кнопки сохранения, но теперь проблема заключается в том, что таблица не перезагружается при нажатии кнопки.

AddCategory.swift

 //Callback:- Property that holds a function
var doneSaving: (() -> ())?

@IBAction func saveActionBtn(_ sender: Any) {

        CategoryFunctions.instance.createCategory(name: name, color: color, isCompleted: false)

        if let doneSaving = doneSaving {
            doneSaving()
        }
        dismiss(animated: true, completion: nil)
    }

category.swift

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if (segue.identifier == Constants.TO_ADD_CATEGORY_VC) {

            let popUp = segue.destination as! AddCategoryVC
            //2 Callback implemented
            popUp.doneSaving = {[weak self] in
                self?.tableView.reloadData()
            }

        }
    }

я делаю что-то не так или что я могу сделать, чтобы это исправить?

func createCategory(name: String, color: String, isCompleted: Bool) -> Void {

        let category = CategoryModel()
        category.name = name
        category.color = color
        category.isCompleted = false
        DBManager.instance.addData(object: category)

    }

//MARK:- Read Category
    func readCategory(completion: @escaping CompletionHandler) -> Void {


                DBManager.instance.getDataFromDB().forEach({ (category) in
                    let category = CategoryModel()
                    Data.categoryModels.append(category)

                })

    }


func getDataFromDB() -> Results<CategoryModel> {
        let categoryArray: Results<CategoryModel> = database.objects(CategoryModel.self)
        return categoryArray
    }

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: Constants.CATEGORY_CELL) as! CategoryCell
        let category = categoryArray[indexPath.row]
        cell.setup(categoryModel: category)
        return cell
    }

1 Ответ

0 голосов
/ 25 августа 2018

Так как отсюда

Сбой при записи в базу данных области

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

popUp.doneSaving = {[weak self] in

 self?.tableView.reloadData()
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return categoryArray.count
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...