Как соответствовать и MKAnnotation и Codable? - PullRequest
1 голос
/ 02 марта 2020

Я хочу представить один из моих объектов на карте. Итак, при объявлении класса я сделал его соответствующим MKAnnotation. В соответствии с MKAnnotation требуется, чтобы я добавил свойство координат типа CLLocationCoordinate2D. Но я хочу иметь возможность позже отправить эти объекты на веб-сервер, поэтому мой объект должен соответствовать либо NSSecureCoding, либо Codable. Поскольку я хочу использовать JSONEncoder и JSONdecoder, то вместо этого я хочу go для Codable. При реализации объявления класса Xcode сообщает мне, что CLLocationCoodinate2D не соответствует Codable. Выполняя поиск в Интернете, я нашел решение, чтобы сделать класс соответствующим Codable, объявив упаковщик типов (я покажу код), * ​​1003 * Но хотя это решает проблему Codable, я не могу сделать класс соответствует MKAnnotation.

    class SomeClass: NSObject, MKAnnotation, Codable {
var property1: String
var coordinate: CLLocationCoordinate2D //required for conformance to MKAnnotation
var image: Image //another property that would not conform to Coadable, but i could make it using a type wrapper.
}
struct Image: Codable {
let imageData: Data? 
init(with image: UIImage) {
self.imageData = image.png()
}
public func getImage()-> UIImage? {
guard let imageData = self.imageData, let image = UIImage(data: imageData) else {return nil}
return image
}

Если я использую то же решение со свойством координат, то изменится, и я больше не буду соответствовать MKAnnotation.

...