简体   繁体   English

如何在Swift中将类类型作为函数参数传递?

[英]How to pass a class type as a function parameter in Swift?

How can i do the following code ? 我该如何做以下代码?

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


it produce an error with error message: 它产生一个错误并显示错误消息:

Use of undeclared type 'entityToFetch' 使用未声明的类型'entityToFetch'


also when i've tried the following code 当我尝试以下代码时

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


it also produced an error with error message: 它还产生了一个错误,并显示错误消息:

Type 'AnyNSManagedObject' does not conform to protocol 'NSFetchRequestResult' 类型“ AnyNSManagedObject”不符合协议“ NSFetchRequestResult”

Use generics 使用泛型

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

or 要么

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM