Avatar
@swift-4.1.3 import Foundation struct HaveCahceObject: Codable { private class Cache: Codable { var cachedString: String? init(from decoder: Decoder) throws { } func encode(to encoder: Encoder) throws { } init() {} } var int: Int { didSet { cache.cachedString = nil } } private let cache = Cache() var string: String { get { if cache.cachedString == nil { cache.cachedString = "\(int)" } return cache.cachedString! } } init(int: Int) { self.int = int } } let object = HaveCahceObject(int: 1) let encoder = JSONEncoder() let decoder = JSONDecoder() print( try decoder.decode(HaveCahceObject.self, from: """ {"int": 123} """.data(using: .utf8)!).string ) print( try String(data: encoder.encode(object), encoding: .utf8)! ) エンコ時にちょっとしたゴミが入るけど消す方法無いかな (edited)