我需要保留用户选择的首选Location
。 Location
包含一些属性:
public struct Location {
// MARK: - Properties
public let identifier: Int
public let name: String
public let address: Address?
// MARK: - Initializations
public init(identifier: Int, name: String, address: Address?) {
self.identifier = identifier
self.name = name
self.address = address
}
}
Address
如下:
public struct Address {
// MARK: - Properties
public let city: String?
public let state: String?
public let postalCode: String?
public let country: String?
// MARK: - Initialization
public init(city: String?, state: String?, postalCode: String?, country: String?) {
self.city = city
self.state = state
self.postalCode = postalCode
self.country = country
}
}
由于我只需要在任何给定时间保留一个Location
,我更喜欢使用UserDefaults
。
我有一个封装Location
的类型,以便对其进行编码和解码,以便UserDefaults
保留。但是,我还没有为编码和解码Address
创建封装类型。
我的问题是:由于我想要保留Location
,其中包含Address
,我是否需要创建封装类型以对Address
进行编码和解码,或者在编码和解码其他属性时,对Address
内的Location
属性进行编码和解码会更合适吗?
我事先并不知道Address
是否会作为UserDefaults
中可能需要保留的属性应用于其他类型。我倾向于创建一个封装类型来编码和解码Address
。
答案 0 :(得分:0)
看来我应该创建一个封装类型,以确保可以对address
实例的Location
属性进行编码和解码。这样我就可以简单地拨打coder.encode(address, forKey: "address")
。
我在更改搜索查询字词后找到了有用的answer。