无法推断通用参数“值”

Posted

技术标签:

【中文标题】无法推断通用参数“值”【英文标题】:Generic parameter 'Value' could not be inferred 【发布时间】:2018-09-10 03:57:36 【问题描述】:

我正在尝试使用 NSCoder 制作数据存储,出于某种奇怪的原因,它向我显示了此错误,我尝试使用 .encode 关键字,请帮助我了解我做错了什么..

let encoder = PropertyListEncoder()

do 
    let data = try encoder.encode(self.itemArray) // <--- showing error here
 catch    

【问题讨论】:

我认为这与 itemArray 未正确初始化有关,你看我已将数组设为数据模型 var itemArray = [CellItemReg](),该类有一个 Bool 和 String 变量,怎么办我解决这个?! 【参考方案1】:

没关系,我找到了问题!如果你们在使数组获取类中指定的数据时遇到同样的问题,则需要将类设为“可编码”,即

import Foundation

class CellItemReg : Encodable  // <-- 'Encodable'

var done : Bool = false
var title : String = ""

【讨论】:

【参考方案2】:

这已在 Swift ios 中为我​​修复。 在您尝试编码的类中继承 Codable。 在您的情况下,

let encoder = PropertyListEncoder()
do 
let data = try encoder.encode(self.itemArray) // <--- showing error here
 catch  

假设 itemArray 是名为“Item”的类的数组。那么你的“项目”需要在 swift 中继承 Codable。 如下所示。

import Foundation

class Item: Codable 
    var id: Int!

一切顺利!

【讨论】:

以上是关于无法推断通用参数“值”的主要内容,如果未能解决你的问题,请参考以下文章

RxDataSources`无法推断通用参数'Self'`

无法推断通用参数“SelectionValue”

通用扩展方法:无法从用法推断类型参数

RxSwift - 无法推断通用参数“Self”

从 ForEach 中引用变量时,SwiftUI“无法推断通用参数'数据'”

无法推断通用参数“T” - Swift 5.5