Как передать тип класса в качестве параметра функции в Swift? - PullRequest
0 голосов
/ 03 июля 2019

Как мне сделать следующий код?

    func setupFetchResultController<AnyNSManagedObject>(entityToFetch: AnyNSManagedObject) {
    let fetchRequest:NSFetchRequest<entityToFetch> = entityToFetch.fetchRequest()
}


выдает ошибку с сообщением об ошибке:

Использование необъявленного типа 'entityToFetch'


также, когда я попробовал следующий код

    func setupFetchResultController<AnyNSManagedObject>(entityToFetch: AnyNSManagedObject) {
    let fetchRequest:NSFetchRequest<AnyNSManagedObject> = AnyNSManagedObject.fetchRequest()
}


также выдает ошибку с сообщением об ошибке:

Тип 'AnyNSManagedObject' не соответствует протоколу 'NSFetchRequestResult'

1 Ответ

1 голос
/ 03 июля 2019

Используйте дженерики

func setupFetchResultController<T: NSManagedObject>(entityToFetch: T) {
    let fetchRequest = T.fetchRequest()        
}

или

func setupFetchResultController<T: NSManagedObject>(entityToFetch: T) {
    let fetchRequest: NSFetchRequest<NSFetchRequestResult> = T.fetchRequest()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...