myC*_*myL 9 objective-c swift codable
我正在研究混合匹配的iOS源代码。我为快速数据模型类实现了可编码,这减少了编写解析器逻辑的负担。我试图使我的目标c类符合可编码协议,这又引发了一个错误“找不到'Codable'的协议声明”。有什么办法可以将此快速协议用于目标c类吗?还是有其他目标c api提供与Codable相同的功能?这个想法是使快速和客观c类之间的解析逻辑相同。
是的,您可以将Codable与Obj-C一起使用。棘手的部分是,因为Obj-C无法看到Decoder,所以当需要从Obj-C端分配该方法时,您将需要创建一个辅助类方法。
public class MyCodableItem: NSObject, Codable {
private let id: String
private let label: String?
enum CodingKeys: String, CodingKey {
case id
case label
}
@objc public class func create(from url: URL) -> MyCodableItem {
let decoder = JSONDecoder()
let item = try! decoder.decode(MyCodableItem.self, from: try! Data(contentsOf: url))
return item
}
public required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decode(String.self, forKey: .id)
label = try? container.decode(String.self, forKey: .label)
super.init()
}
required init(coder decoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4906 次 |
| 最近记录: |