Я хотел бы использовать пользовательские классы с необязательными типами в области. Для сериализации и работы с CLLocation
например моя идея заключается в следующем:Лучший способ сериализации необязательного свойства, которое имеет собственный класс
class MyClass : Object {
dynamic var _coordinates :NSData?
var coordinates :CLLocation? {
get {
if _coordinates == nil {
return nil
}
// we can cache it too to avoid deserialization every time
let coordinatesObj : CLLocation = NSKeyedUnarchiver.unarchiveObjectWithData(_coordinates!) as! CLLocation
return coordinatesObj
}
set(newCoordinates) {
if newCoordinates == nil {
_coordinates = nil
} else {
_coordinates = NSKeyedArchiver.archivedDataWithRootObject(newCoordinates!)
}
}
}
...
}
Есть ли лучший способ? Должны ли мы иметь какой-то протокол в Realm, который позволяет нам возвращать необязательный NSData
для определенного свойства? Другая идея - создать собственный метод, например ignoredProperties, который может использоваться для реализации логики для преобразования объекта в NSData?
и наоборот для набора настраиваемых свойств.
Да, я обсуждал это на официальной странице сообщества github, но это гораздо более чистый способ справиться с этой проблемой. Однако, используя flatMap, мы можем избежать некоторых других шаблонов. Я добавил его ниже. – danielemm