¿Modelos del Reino Swift separados o no?

Soy nuevo en el mundo de iOS y Swift y estoy trabajando en una nueva aplicación que quiero usar Reino para la persistencia. Ya tengo las Entidades en mi código que mis Servicios tienen acceso y completan para un punto final de la API HTTP.

Ahora quiero persistir en ciertas Entidades y quería recibir consejos sobre si debería crear nuevos Modelos específicos del Reino para cada una de mis entidades para leer y escribir desde el Reino. O debería convertir todas mis entidades Swift simples y existentes a Entidades del Reino. Al principio, esto se sintió mal, ya que pasaría entidades del reino alnetworkingedor de mi aplicación en lugar de solo en la capa de persistencia.

Sin embargo, la alternativa es que cada vez que leo / escribo entidades al Reino, necesito convertirlos de ida y vuelta de Entidades a Entidades del Reino.

¿Algún consejo sobre el mejor enfoque para esto?

Gracias

Ambas estrategias están bien y tienen sus propias ventajas y desventajas.

Objetos de valor + objects de reino

  • ✅ Los objects de valor son seguros para subprocesss.
  • ✅ Los objects de valor pueden ser mutados en cualquier lugar, sin preocuparse por los efectos secundarios.
  • ✅ Los objects de valor pueden definirse de manera arbitraria y permiten usar las posibilidades completas del lenguaje, lo que permite las restricciones de solución de movimiento proporcionadas por la asignación de persistencia de objects
  • ❗️ Sin carga lenta, lo que significa que la jerarquía completa del object debe cargarse en la memory
  • Can️ No se pueden express ciclos
  • ❗️ requiere mantener las definiciones de model dos veces
  • ❗️ Necesita lógica para mapear desde la encoding de transporte (p. Ej., JSON) a Swift Structs y desde los objects de reino

Usar solo objects de reino

  • ✅ Copia cero, lo que significa que leer de ellos es less costoso
  • ✅ Live, lo que significa que sus datos están siempre actualizados
  • ✅ Se carga lentamente desde la database: se lee less disco
  • ✅ Puede express ciclos y jerarquías de objects arbitrarios
  • ✅ Defina su model en un solo lugar
  • ✅ Si puede controlar la encoding de transporte y puede compartir convenciones de nomenclatura, puede confiar principalmente en la lógica de mapeo del tipo de valor de Foundation integrado de Realm utilizada por create(_:update:_) y sus amigos.
  • ✅ Admite KVO, que permite una fácil integración con algunos frameworks de progtwigción reactiva
  • ❗️ Añade restricciones a la forma en que define los objects de su model (Algunas construcciones de lenguaje no son compatibles directamente como enumeración y requieren soluciones provisionales por ahora)
  • ❗️ Los types de reference necesitan más cuidado de las mutaciones para evitar efectos secundarios indeseables, además, las modificaciones solo son posibles dentro de las transactions de escritura (que deben agruparse para ser lo más grandes posible)
  • Real️ Realm Objects no son seguros para subprocesss

TL; DR

Se pierden muchas funciones de Realm cuando se opta por abandonar Objetos de dominio y tendrán dificultades para volver a implementarlas. Dependiendo de cuánto necesite estos y cómo se vea su caja de uso, comprará security de hilo por un alto costo.

A largo ploop, estamos trabajando para hacer que los objects de Realm sean aún más fáciles de usar y tratar de eliminar sus desventajas, por lo tanto, ser conscientes de lo que son será útil para tomar una decisión bien informada.