Возвращаемый класс на основе Generic в Swift - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть два пользовательских объекта класса. Мне нужно показать представление, которое считывает данные обоих объектов в зависимости от того, какой объект класса мы передали.

enter image description here

Как мне этого добиться?

Спасибо,

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

Вы не можете сделать это, как var object = <T>(), так как это неправильный формат, или var object = T(), так как неноминальный тип 'T' не поддерживает явную инициализацию.

Вы можете использовать это так: -

class ABC<T>: UIViewController{

    var object: T? = nil
}

Надеюсь, это поможет:)

0 голосов
/ 19 ноября 2018

Вы можете использовать универсальный тип.

class ControllerTimeline<T>: UIViewController {

    var myObject :T?
    ...
}

Если вам нужно, чтобы T имел какое-то ограничение (пример: может быть только NSObject)

class ControllerTimeline<T: NSObject>: UIViewController {

    var myObject :T?
    ...
}

Если вы хотите использовать только A или B, вы можете создать общего родителя для A и B +

class ControllerTimeline<T: C>: UIViewController {
...

Или пусть A и B реализуют общий протокол и набирают что-то вроде этого

class ControllerTimeline<T: MyProtocol>: UIViewController {
...
0 голосов
/ 19 ноября 2018

Вы можете установить свой myObject как AnyObject, и после того, как вы сможете проверить, объект из класса A или класса B.

class viewc : UIViewController {
    var myObject: AnyObject?

    override func viewDidLoad() {
        super.viewDidLoad()
        if let object = myObject as? ClassA {
            print("Object is of class- ClassA")
        }else if let object = myObject as? ClassB {
            print("Object is of class- ClassB")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...