![](/img/trans.png)
[英]How do I add an element to array in reducer in Redux when the array does not yet exist?
[英]Problem when an array element i'm trying to filter for does not exist
我有一些代码从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{
}
}
当filteredMessageID具有0值时,似乎发生了崩溃。 如何处理这种情况? 提前致谢。
您可以在访问messageIDElement
, readStatusElement
和filteredMessageID
的索引之前进行预先检查, readStatusElement
确认其没有计数0。
if filteredMessageID.count != 0 {
if readStatusElement.count != 0 && messageIDElement != 0 {
// Your code
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.