web-dev-qa-db-ja.com

Swiftlint警告:For Where Violation: `for`内の単一の` if`よりも `where`句が優先されます。 (for_where)

私はSwift=をアプリケーション開発に使用し、Swift lintを使用しています。しかし、次のコードに関する警告が表示されています。

for settingsKeys in searchResults {

        if  settingsKeys.key == settingsObject.key {
          settingsKeys.value = settingsObject.value
          try context.save()
        }
      }

スクリーンショットを添付します:

enter image description here

19
Chelsea Shawra

Swiftlint構成で推奨される構文は次のとおりです。

for settingsKeys in searchResults where settingsKeys.key == settingsObject.key {
    settingsKeys.value = settingsObject.value
    try context.save()
}

に似ています

for settingsKeys in (searchResults.filter { $0.key == settingsObject.key }) {
    settingsKeys.value = settingsObject.value
    try context.save()
}

同じkeyの結果が1つしかないことがわかっている場合は、直接使用できます

if let settingsKeys = (searchResults.first { $0.key == settingsObject.key }) {
    settingsKeys.value = settingsObject.value
    try context.save()
}
53
Sulthan

whereforの一部であることを期待しているようです...

for settingsKeys in searchResults where settingsKeys.key == settingsObject.key {
    settingsKeys.value = settingsObject.value
    try context.save()
}
2
Ashley Mills