swift – 无法将类型'[T]’的值转换为预期的参数类型'[_]’

swift – 无法将类型'[T]’的值转换为预期的参数类型'[_]’,第1张

概述每次我尝试编译这个,我都会收到错误: Cannot convert value of type '[T]' to expected argument type '[_]' 我不确定为什么会一直这样,我试图查找解决方案,但没有找到任何看起来有用的东西. 这是我的代码: class FetchRequest <T: NSManagedObject>: NSFetchRequest<NSFetchReq 每次我尝试编译这个,我都会收到错误:
Cannot convert value of type '[T]' to expected argument type '[_]'

我不确定为什么会一直这样,我试图查找解决方案,但没有找到任何看起来有用的东西.
这是我的代码:

class FetchRequest <T: NSManagedobject>: NSFetchRequest<NSFetchRequestResult> {        init(entity: NSEntityDescription) {        super.init()        self.entity = entity    }    required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }    typealias FetchResult = (success: Bool,objects: [T],error: NSError?)    func fetch <T> (request: FetchRequest<T>,context: NSManagedobjectContext) -> FetchResult {        do {         let results = try context.fetch(request)            return FetchResult(true,results as! [T],nil)        } catch let error as NSError {         return (false,[],error)        }    }}

编辑:

我在这一行得到错误:

return FetchResult(true,nil)
问题是你有两个通用的占位符类型叫做T.一个在类范围,一个在方法范围.当你说结果为! [T],你指的是方法范围的T – 它与你的FetchResult类型别名中使用的类范围T无关,它是你的fetch方法的返回类型.

因此,您只需要重命名一个占位符,或者更好的是,消除看似冗余的请求:方法中的参数,只需使用self:

func fetch(inContext context: NSManagedobjectContext) -> FetchResult {    do {        let results = try context.fetch(self)        return (true,nil)    } catch let error as NSError {        return (false,error)    }}

现在,您只需在要获取的FetchRequest实例上调用fetch(inContext :)即可.

总结

以上是内存溢出为你收集整理的swift – 无法将类型'[T]’的值转换为预期的参数类型'[_]’全部内容,希望文章能够帮你解决swift – 无法将类型'[T]’的值转换为预期的参数类型'[_]’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存