La suppression de duplication est évidente:
let identifier: String
switch dataObj.type {
case "X":
identifier = "XVC"
case "Y":
identifier = "YVC"
default:
identifier = "ZVC"
}
let pvc = MainStoryboard().instantiateViewController(withIdentifier: identifier) as! PVC
pvc.data = dataObj
pvc.isFull = true
pvc.delegate = self
Où PVC
est la superclasse commune de vos 3 contrôleurs, par exemple :
class PVC : UIViewController {}
class XVC : PVC {}
class YVC : PVC {}
class ZVC : PVC {}
Si vos 3 classes ne sont pas une superclasse commune, vous pouvez utiliser un protocole à la place:
protocol PVC : class {
var data: ...
var isFul: ...
weak var delegate: ...
}
et la mettre en œuvre par vos 3 classes:
En bref, à supprimer la duplication, vous devez ajouter une interface commune aux 3 contrôleurs. Soit en utilisant une superclasse ou un protocole commun.
Oui, vous pouvez créer la fonction simple pour accomplir cette chaîne (décrivant: SomeViewController.self) –