У меня есть код, который получает ключ от firebase и сравнивает его с ключом, хранящимся локально в текстовом файле. Если есть совпадение, он проверяет дополнительный параметр чтения / непрочитанного и затем помечает переменную как «Чтение» или «Непрочитанное».
Код работает нормально до тех пор, пока каждый ключ, который я извлекаю из Firebase, существует в текстовом файле. Тем не менее, я получаю аварийное завершение «Индекс из границ», если ключ от Firebase не существует в моем локальном файле.
Код, указанный ниже:
func readFile(){
let filename = getDocumentsDirectory().appendingPathComponent("output.txt")
do {
let textStringFromFile = try String(contentsOf: filename, encoding: .utf8)
var result: [(messageID: String, readStatus: String)] = []
let rows = textStringFromFile.components(separatedBy: "\n")
for row in rows {
let columns = row.components(separatedBy: ",")
result.append((columns[0], columns[1]))
}
let filteredMessageID = result.filter { $0.messageID == (nominationKeyForReadStatus) }
var messageIDElement = filteredMessageID.map { $0.messageID }
var readStatusElement = filteredMessageID.map { $0.readStatus }
if readStatusElement[0] == "1" && nominationKeyForReadStatus == messageIDElement[0] {
readStatusFromFunction = "Read"
}
else {
readStatusFromFunction = "Unread"
}
}
catch{
}
}
Кажется, что происходит сбой, когда FilterMessageID имеет 0 значений. Как я могу объяснить этот случай? Заранее спасибо.