Ho un metodo che scorre su una matrice e chiama un altro metodo con ogni elemento come argomento. Se io dichiaro questo metodo come:Iterazione su una raccolta in Swift: var vs let
func didFinishedListFiles(files: [FileModel]) {
for var fileData in files {
self.downloadSingleFile(NSUUID(UUIDString: fileData.uuid!)!);
}
}
Xcode mostra un avvertimento:
Variable 'fileData' was never mutated; consider changing to 'let' constant
Ma se cambio var
-let
:
func didFinishedListFiles(files: [FileModel]) {
for let fileData in files {
self.downloadSingleFile(NSUUID(UUIDString: fileData.uuid!)!);
}
}
Xcode mostra un errore:
'let' pattern cannot appear nested in an already immutable context
Qual è il modo corretto di implementarlo senza avvisi/errori?
Isn' è semplicemente 'per fileData nei file {...'. Nessuna var o bisogno. – Fogmeister
Grazie, hai ragione ... ehhh –
Prego. Penso che implicitamente lo renda un 'let' e se si desidera mutare l'oggetto nella raccolta, è necessario impostarlo esplicitamente come' var' – Fogmeister