谁知道关于使GSMPlace从googleplaces可编码?
我想要的是,存储GMSPlace数据(位置和名称)到UserDefaults中,然后从UserDefaults中检索并存储回destinationPlace。
import Foundation
import RxSwift
import RxCocoa
import GooglePlaces
class SearchViewModel {
var destinationPlace: BehaviorRelay<GMSPlace?> = BehaviorRelay(value: nil)
var isValid: Bool {
if destinationPlace.value != nil {
return true
}
return false
}
}
我不知道GooglePlaces
或对象类型GMSPlace
的任何细节。
但是在Swift中,如果你想在一个类中添加一些东西,你可以创建一个扩展,可以为它添加协议和函数。在你的例子中,它看起来像这样:
extension GMSPlace: Codable {
enum CodingKeys: String, CodingKey {
case propertyName1
case propertyName2
...
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
propertyName1 = try container.decode(String.self, forKey: .propertyName1)
propertyName2 = try container.decode(Int.self, forKey: .propertyName2)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(propertyName1, forKey: .propertyName1)
try container.encode(propertyName2, forKey: .propertyName2)
}
}
你必须弄清楚你需要包含哪些属性的细节,它们需要映射到哪些类型等等。
如果它给你带来了问题,你也应该在某个地方为他们开一张票,让他们把这个添加到SDK中。