Domanda

Vorrei condividere un formato di documento comune tra iOS e OSX. Si noti che questa non è un'applicazione MDI; ci sarà mai un documento di salvare / caricare. Non è necessario NSDocument stile guidata dall'utente gestione (es .. Salva, Salva con nome, Open ecc).

La sfida più grande è non sembra esserci alcun formato di codifica documento comune naturalmente compatibile con OSX e IOS (ancora). Secondo applicazioni basati su documenti Guida alla programmazione per iOS, sembra che la codifica / decodifica è necessaria la conversione tra NSDocument e UIDocument classi derivate. Vorrei che ci sia un meccanismo di serializzazione universale, compatibile con tutti i dispositivi in ??tutto l'ecosistema Apple. Tutti i pensieri, le idee, i suggerimenti sono apprezzati in questo senso.

È possibile utilizzare una classe derivata UIDocument nella mia applicazione osx mac e il documento diventa compatibile con iOS?

È stato utile?

Soluzione

No, non è possibile utilizzare o sottoclasse UIDocument in un'applicazione Cocoa perché UIDocument non esiste in Cocoa.

In entrambi NSDocument e UIDocument, si determina il formato che si intende utilizzare. Così, proprio la loro attuazione sia di utilizzare lo stesso formato per l'uscita e l'ingresso.

Non sarebbe troppo difficile da usare il preprocessore per impostare un file-pair che implementa una sottoclasse di NSDocument quando si costruisce per il Mac e UIDocument quando si costruisce per iOS. Ciò eviterebbe di dover non corrispondenti di serializzazione e deserializzazione implementazioni, in quanto si avrebbe una sola copia di ogni e di essere di utilizzarlo su entrambe le piattaforme.

Altri suggerimenti

La risposta di Pietro sopra è corretto, ma ho un suggerimento che non coinvolge il C pre-processore (non disponibile in Swift), che è un po 'più di cacao-like.

Guarda il WWDC 2014 sessione 233 impostare il vostro iOS e Mac apps in un unico progetto come obiettivi separati, quindi utilizzare le categorie sulla classe di documento per implementare la funzionalità comune:

CommonFunctions.h    

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

-

CommonFunctions.m

@implementation AppDocument (CommonFunctions)

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

@end

La classe AppDocument avrebbe 2 diverse classi che ereditano da UI / NSDocument come necessario per ogni piattaforma / target, e ogni bersaglio tirava nelle categorie da un luogo comune.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top