У меня есть 2 кнопки.
- Когда я нажимаю кнопку поиска, приложение переходит в просмотр таблицы с моим
данные о пожарном депо и панель поиска.
- Когда я нажимаю кнопку «Запрос», я запрашиваю свою базу данных на основе массива.
Проблема в том, что когда я нажимаю кнопку «Запрос» и мой запрос завершается, если я возвращаюсь и нажимаю кнопку поиска, мое приложение вылетает со следующей ошибкой.
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'FIRESTORE INTERNAL ASSERTION FAILED: Firestore instance has already been started and its settings can no longer be changed. You can only set settings before calling any other methods on a Firestore instance.'
*** First throw call stack:
(0x1d95ed27c 0x1d87c79f8 0x1d9506988 0x1da016ee8 0x1050f2f7c 0x104f0aaa4 0x104f1be30 0x104e0cba4 0x104e0a6a8 0x104e0ab78 0x205949fc8 0x20594a3cc 0x2058a74c8 0x2058bb4b8 0x2058bc8e0 0x20589faf0 0x20638aed0 0x1ddaa1a20 0x1ddaa69c8 0x1dda092d0 0x1dda37330 0x1dda37f20 0x1d957e5f8 0x1d9579320 0x1d957989c 0x1d95790b0 0x1db77979c 0x205ef3978 0x104e22e58 0x1d903e8e0)
libc++abi.dylib: terminating with uncaught exception of type NSException
Я много искал об этой проблеме, и я не могу понять, что это значит. Если кому-то нужен код, конечно, скажите мне, чтобы редактировать, но я не думаю, что код имеет отношение Я думаю, что это более общая ошибка.
EDIT
Некоторый код из моей кнопки поиска, который я использую пакетами.
func beginBatchFetch() {
let settings = FirestoreSettings()
settings.isPersistenceEnabled = false
fetchMoreIngredients = true
let db = Firestore.firestore()
db.settings = settings
var query: Query!
if ingredientsArray.isEmpty {
SVProgressHUD.show()
query = db.collection("Ingredients").limit(to: 4)
print("First 4 ingredient loaded")
} else {
query = db.collection("Ingredients").start(afterDocument: lastDocument).limit(to: 4)
print("Next 4 ingredient loaded")
}
query.getDocuments { (querySnapshot, err) in
if let err = err {
print("\(err.localizedDescription)")
print("Test Error")
} else if querySnapshot!.isEmpty {
self.fetchMoreIngredients = false
return
} else {
if (querySnapshot!.isEmpty == false){
let res = querySnapshot!.documents.compactMap({Ingredients(dictionary: $0.data())})
self.ingredientsArray.append(contentsOf: res)
self.tableView.reloadData()
self.fetchMoreIngredients = false
SVProgressHUD.dismiss()
}
self.lastDocument = querySnapshot!.documents.last
}
}
}
func searchIngredients(text: String){
fetchMoreIngredients = true
let db = Firestore.firestore()
db.collection("Ingredients").whereField("compName", arrayContains: text).getDocuments{ (querySnapshot, err) in
if let err = err {
print("\(err.localizedDescription)")
print("Test Error")
} else {
if (querySnapshot!.isEmpty == false){
self.searchedIngredientsArray = querySnapshot!.documents.compactMap({Ingredients(dictionary: $0.data())})
self.ingredientsArray = self.searchedIngredientsArray
self.tableView.reloadData()
self.fetchMoreIngredients = true
}else{
print("No Ingredients were found")
}
}
}
}