Aujourd'hui, je trouve un morceau maladroit de code:Est-il possible de déstructurer un objet dans un commutateur?
if segue.identifier == "settings" {
if let settingsController = segue.destination as? SettingsController
{
//...setup settings controller here
}
} else if segue.identifier == "mocks" {
if let mocksController = segue.destination as? MocksController
{
//...setup mocks controller here controller here
}
}
//... and a lot of if-elses
Je déteste vraiment avoir if-else-if
dans mon code et décider de factoriser cette pièce avec switch
. Malheureusement, ma connaissance de boniment en correspondance rapide sont très limitées, donc le mieux que je puisse faire est:
switch segue.identifier! {
case "mocks" where segue.destination is MocksController:
let mocksController = segue.destination as! MocksController
// do corresponding staff here
break
case "settings" where segue.destination is SettingsController:
let settingsController = segue.destination as! SettingsController
// do corresponding staff here
break
}
Je me demande est-il possible d'extraire identifier
et destination
propriétés de segue
objet en utilisant comme modèle de correspondance en pseudo -code ci-dessous:
switch segue {
case let destination, let identifier where destination is ... && identifier == "...":
//do somthing
break
}
Je ne crois pas qu'il est actuellement possible d'extraire directement les valeurs de propriété dans un modèle donné - vous pouvez toujours simplement passer au-dessus de '(segue.identifier, segue.destination)' bien. – Hamish