Приложение зависает с обновлением запроса FMDB IOS
Мое приложение зависает при обновлении значения в базе данных. это код, который я использую, чтобы проверить, есть ли какие-либо изменения значения на сервере.
DataService.ds.REF_POSTS.observe(.childChanged, with: { (snapshot) in
let postDict = snapshot.value as? Dictionary<String, AnyObject>
self.db.updateBook(bookName: postDict!["book_name"] as! String, id: postDict!["id"] as! String)
self.arrayBooks.removeAll()
self.arrayBooks.append(contentsOf: self.db.fetchAll())
self.collectionView.reloadData()
})
и это класс базы данных, который имеет функцию updateBook
func updateBook (bookName : String , id: String) {
let sqlString = "UPDATE magazine SET book_name='\(bookName)' WHERE id='\(id)'"
if self.fmdb.executeUpdate(sqlString, withArgumentsIn: []) {
}
}
когда приложение зависает, я нажимаю на паузу в xcode, чтобы увидеть, какие ошибки я получаю. ошибки:
[FMDatabase executeUpdate:error:withArgumentsInArray:orVAList:]
[FMDatabase executeUpdate:withArgumentsInArray:]
updateBook(bookName:id:)
closure #2 in controller.viewDidLoad()
1 ответ
Я исправил проблему, изменив функцию обновления в классе базы данных
func updateBook (bookName : String , id: String) {
DispatchQueue.main.async {
let sqlString = "UPDATE magazine SET book_name='\(bookName)' WHERE id='\(id)'"
if self.fmdb.executeUpdate(sqlString, withArgumentsIn: [bookName,id]) {
print("sql string \(sqlString)")
}
}
}
так что в основном обновление будет в основном потоке DispatchQueue.main.async