Swiftlint警告:对于Where Violation:`where`子句比`for`中的单个`if`更受欢迎.(for_where)

Che*_*wra 23 swift3 swiftlint xcode8

我正在使用swift进行应用程序开发并使用swift lint.但我收到有关以下代码的警告:

for settingsKeys in searchResults {

        if  settingsKeys.key == settingsObject.key {
          settingsKeys.value = settingsObject.value
          try context.save()
        }
      }
Run Code Online (Sandbox Code Playgroud)

屏幕截图如下:

在此输入图像描述

Sul*_*han 59

swiftlint配置首选的语法是:

for settingsKeys in searchResults where settingsKeys.key == settingsObject.key {
    settingsKeys.value = settingsObject.value
    try context.save()
}
Run Code Online (Sandbox Code Playgroud)

这是类似的

for settingsKeys in (searchResults.filter { $0.key == settingsObject.key }) {
    settingsKeys.value = settingsObject.value
    try context.save()
}
Run Code Online (Sandbox Code Playgroud)

如果您知道只有一个结果相同key,您可以直接使用

if let settingsKeys = (searchResults.first { $0.key == settingsObject.key }) {
    settingsKeys.value = settingsObject.value
    try context.save()
}
Run Code Online (Sandbox Code Playgroud)