Question

Je voudrais partager un format de document commun entre iOS et OSX. Notez que ce n'est pas une application MDI; il y aura jamais un seul document pour enregistrer / charger. utilisateur de style NSDocument gestion axée sur (.. Enregistrer par exemple, Enregistrer sous, Open, etc.) n'est pas nécessaire.

Le plus grand défi est il ne semble pas document commun format de codage naturellement compatible avec OSX et IOS (encore). Selon la demande axée sur les documents Guide de programmation pour iOS, il ressemble à l'encodage / décodage de conversion est nécessaire entre NSDocument et UIDocument classes dérivées. Je souhaite qu'il y ait un mécanisme de sérialisation universel compatible avec tous les appareils à travers l'écosystème Apple. Toutes les pensées, idées, conseils sont appréciés à cet égard.

Puis-je utiliser une classe dérivée UIDocument dans mon application mac osx et le document devient compatible avec IOS?

Était-ce utile?

La solution

Non, vous ne pouvez pas utiliser ou sous-classe UIDocument dans une application Cocoa car UIDocument n'existe pas dans le cacao.

Dans les deux NSDocument et UIDocument, vous déterminez le format que vous utiliserez. Donc, il suffit de les mettre en œuvre à la fois d'utiliser le même format pour la sortie et l'entrée.

Il ne serait pas trop difficile à utiliser le préprocesseur pour mettre en place un fichier paire qui implémente une sous-classe de NSDocument lors de la construction pour le Mac et UIDocument lors de la construction pour iOS. Cela vous évitera d'avoir des implémentations incompatibles de sérialisation et désérialisation, puisque vous auriez une seule copie de chacun et de l'utiliser sur les deux plates-formes.

Autres conseils

La réponse de Pierre ci-dessus est correct, mais j'ai une suggestion qui ne concerne pas le C pré-processeur (non disponible dans Swift) qui est un peu plus Cocoa comme.

Regarder la WWDC session de 2014 233 pour configurer votre iOS et Mac apps dans un projet unique en tant que cibles distinctes, utilisez les catégories de votre classe de document pour mettre en œuvre les fonctionnalités communes:

CommonFunctions.h    

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

-

CommonFunctions.m

@implementation AppDocument (CommonFunctions)

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

@end

Votre classe AppDocument aurait 2 classes différentes héritant de l'interface utilisateur / NSDocument nécessaire pour chaque plate-forme / cible, et chaque cible se retirerait dans les catégories d'un lieu commun.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top