web-dev-qa-db-fra.com

Avertissement Swiftlint: pour la violation Where: les clauses `where` sont préférées à un seul` if` à l'intérieur d'un `for`. (au cas où)

J'utilise Swift pour le développement de mon application et j'utilise Swift lint for. Mais je reçois un avertissement concernant le code suivant:

for settingsKeys in searchResults {

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

La capture d'écran est jointe ci-dessous:

enter image description here

19
Chelsea Shawra

La syntaxe préférée par votre configuration swiftlint est:

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

Qui est similaire à

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

Si vous savez qu'il n'y a qu'un seul résultat avec le même key, vous pouvez utiliser directement

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

On dirait qu'il s'attend à ce que le where fasse partie du for

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