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

时间:2019-07-03 03:57:43

标签: swift xcode generics nsfetchedresultscontroller nsmanagedobject

我该如何执行以下代码?

    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 个答案:

答案 0 :(得分:1)

使用泛型

time = distance / speed

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