[英]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.