В следующем коде, основанном на сравнении строк, я принимаю решение о том, какой VC будет показан.Избегание повторяющегося кода в swift
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
dataObj = frc.object(at: indexPath) as! Data_Object
var pvc: UIViewController?
if dataObj.type == "X" {
let obj = MainStoryboard().instantiateViewController(withIdentifier: "XVC") as! XVC
obj.data = dataObj
obj.isFull = true
obj.delegate = self
pvc = obj as UIViewController
} else if dataObj.type == "Y" {
let obj = MainStoryboard().instantiateViewController(withIdentifier: "YVC") as! YVC
obj.data = dataObj
obj.isFull = true
obj.delegate = self
pvc = obj as UIViewController
} else {
let obj = MainStoryboard().instantiateViewController(withIdentifier: "ZVC") as! ZVC
obj.data = dataObj
obj.isFull = true
obj.delegate = self
pvc = obj as UIViewController
}
obj.modalPresentationStyle = .popover
let popPVC = pvc?.popoverPresentationController
popPVC?.sourceView = self.view
self.present(pvc!, animated: true, completion: nil)
}
Теперь весь код повторяется, кроме имени класса, и я хочу этого избежать. Но, быстрые не имеют NSClassFromString
Как это сделать? Должен ли я использовать Generics/Templates? Какие-либо предложения!
Извините, если мне не хватает чего-то глупого здесь.
Да, вы можете создать простую функцию для выполнения этой строки (с описанием: SomeViewController.self) –