swift - 如何在 Swift 中将类类型作为函数参数传递?
问题描述
我该怎么做以下代码?
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”
解决方案
使用泛型
func setupFetchResultController<T: NSManagedObject>(entityToFetch: T) {
let fetchRequest = T.fetchRequest()
}
或者
func setupFetchResultController<T: NSManagedObject>(entityToFetch: T) {
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = T.fetchRequest()
}
推荐阅读
- python - jinja2.exceptions.UndefinedError - 列表对象没有元素 - 在 jinja2 模板中显示列表 - Flask
- mysql - 数字海洋sql连接和phpmyadmin突然停止工作
- node.js - 如何使用 PassportJS for Google 和 Facebook OAUth 处理对节点服务器的登录请求?
- cocoapods - 如何在一个项目中同时使用 Swift Package Manager (SPM) 和 cocoapods?
- puppeteer - Puppeteer 设置请求 Cookie 标头
- python-3.x - Python 上个月有 2 位数字
- javascript - 如何从 Javascript 中的 DateTime 对象中获取标准日期
- java - 如何在所有行尾添加特定符号?
- .net - 使用 .net 5.0 构建时出现 MSB3644 错误
- kotlin - 用于中间可见性的 Kotlin 修饰符或变通方法