下面的代码是循环遍历Dictionary中的所有键字符串。除非我想搜索字典上没有的字符串,否则一切都很好。当我搜索不在Dictionary中的字符串时,我的代码应该再执行一个循环,然后落入if index != patternFromDatabase.count的其他部分,但是它不会,因为patternFromDatabase的枚举计数完成了patternFromDatabase循环。既然我不能只写patternFromDatabase.enumerated() + 1,那么在枚举完成后最后一次循环该怎么办?
你有什么建议吗?或者我应该修改一下我的代码,这样我就不必面对这个问题来达到我的目的了?非常感谢。如果您需要更多的解释,我很乐意为您解释代码。
for (index, key) in patternFromDatabase.enumerated() {
let startTimeForBitap = Date()
print("i: \(index), db: \(patternFromDatabase.count), key: \(key)")
if index != patternFromDatabase.count {
if Algorithm().searchStringWithBitap(key, pattern: insertedPattern) == -1 {
continue
} else {
let endTimeForBitap = Date().timeIntervalSince(startTimeForBitap)
bitapRunningTime.text = "\(convertTimetoMS(time: endTimeForBitap)) ms"
print("BITAP FOUND: \(endTimeForBitap)")
let bitapTextResult = pattern[key]
print(bitapTextResult ?? "")
bitapTextLabel.text = bitapTextResult
bitapPatternLabel.text = key
break
}
} else {
let endTimeForBitap = Date().timeIntervalSince(startTimeForBitap)
bitapTextLabel.text = "Pattern NOT FOUND"
bitapPatternLabel.text = "Pattern NOT FOUND"
bitapRunningTime.text = "\(convertTimetoMS(time: endTimeForBitap)) ms"
print("BITAP NOT FOUND: \(endTimeForBitap)")
}
}发布于 2017-08-20 08:40:09
Swift 3.0
// asssyme haveResult表示结果不理想
// if you need one more loop even if he get result you can use same way
let dict = ["c": 123, "d": 045, "a": 456]
for (index, entry) in dict.enumerated() {
if index == dict.count-1 { // Last loop
if !haveResult {
// make external call
}
}
}https://stackoverflow.com/questions/45779857
复制相似问题