swift - Codable - arrayPropety [AnyObject]:如果没有上下文类型,则无法解析对成员“数据”的引用
问题描述
设置可编码类。AnyObjects 数组正在创建编译错误:
如果没有上下文类型,则无法解析对成员“数据”的引用
class ClassA<T>: NSObject, Codable {
// MARK: - Properties
let title: String
let data: [T] // data is an array of either Codable objects of ClassB or ClassC.
// MARK: - Keyes
private enum CodingKeys: String, CodingKey {
case title
case data
}
required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
title = try container.decode(String.self, forKey: .title)
data = [T]()
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(
keyedBy: CodingKeys.self
)
try container.encode(title, forKey: .title)
try container.encode(data, forKey: .data) // Compilation error: Reference to member 'data' cannot be resolved without a contextual type
}
}
解决方案
数据类型T
必须符合Encodable/Codable
变化
class ClassA<T:Codable>: NSObject, Codable {
编译器不知道数组泛型元素是否符合Encodable
,因此错误
推荐阅读
- c++ - 为什么 lldb 漂亮的打印机不适用于 MacOS 上的 GNU GCC 编译程序?
- node.js - 了解 Flutter、NodeJS 和 Cloud Functions 中的 JSON 转换。面临代码中的主要问题
- react-native - useState 不是 useEffect 中的函数
- angular - 如何在 Angular slickgrid 中使用格式化程序创建自定义工具提示而不创建角度组件?
- c++ - 窗口上的 Tesseract api 链接器(或构建?)问题
- aws-amplify - 放大开发者菜单 - 如何禁用它
- aws-api-gateway - 是否可以在 AWS API Gateway 中记录请求正文大小?
- javascript - Vue v-for not update model variable
- algorithm - 为什么我的递归归并排序算法会导致堆栈溢出?
- git - 变基后 git checkout 到原点