Pregunta

Me gustaría compartir un formato de documento común entre iOS y OSX. Tenga en cuenta que esta no es una aplicación MDI; Alguna vez habrá un documento para guardar/cargar. No se requiere la administración de usuarios de estilo NSDocument (por ejemplo, guardar, guardar como, abrir, etc.).

El mayor desafío es que no hay un formato de codificación de documentos común naturalmente compatible con OSX e iOS (todavía). Según la Guía de programación de aplicaciones basada en documentos para iOS, parece que se requiere una conversión de codificación/decodificación entre las clases derivadas de NSDocument y Uidocument. Desearía que haya un mecanismo de serialización universal compatible con todos los dispositivos en el ecosistema de Apple. Cualquier pensamiento, ideas, consejos es apreciado a este respecto.

¿Puedo usar una clase derivada de uidocumento en mi aplicación Mac OSX y el documento se vuelve compatible con iOS?

¿Fue útil?

Solución

No, no puede usar ni subclase uidocumento en una aplicación de cacao porque uidocument no existe en cacao.

Tanto en NSDocument como Uidocument, determina el formato que usará. Por lo tanto, solo impleménizos ambos para usar el mismo formato para la salida y la entrada.

No sería demasiado difícil usar el preprocesador para configurar un par de archivos que implementa una subclase de NSDocument al construir para Mac y UiDocument cuando se construye para iOS. Esto evitaría que tenga implementaciones de serialización y deserialización no coincidentes, ya que solo tendría una copia de cada una y la usa en ambas plataformas.

Otros consejos

La respuesta de Peter anterior es correcta, pero tengo una sugerencia que no involucra al preprocesador C (no disponible en Swift) que es un poco más parecido a cacao.

Mire la sesión 233 de WWDC 2014 para configurar sus aplicaciones iOS y Mac en un solo proyecto como objetivos separados, luego use categorías en su clase de documentos para implementar la funcionalidad común:

CommonFunctions.h    

@interface AppDocument (CommonFunctions)
- (void)function;
@end

-

CommonFunctions.m

@implementation AppDocument (CommonFunctions)

- (void) function {
      /// stuff here
}

@end

Su AppDocument La clase tendría 2 clases diferentes que heredan de UI/NSDocument según sea necesario para cada plataforma/objetivo, y cada objetivo atraería las categorías de un lugar común.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top