Frage

Ich möchte ein gemeinsames Dokumentformat zwischen iOS und OSX teilen. Beachten Sie, dass dies keine MDI -Anwendung ist. Es wird jemals ein Dokument zum Speichern/Laden geben. NSDOCUMENT STYLE UNDERSCHAFTSMANAGEMENT (z. B. Speichern, Speichern wie, offen usw.) ist nicht erforderlich.

Die größte Herausforderung besteht darin, dass es kein gemeinsames Dokumenten -Codierungsformat gibt, das natürlich mit OSX und iOS (noch) kompatibel ist. Laut einem dokumentbasierten Anwendungsprogrammierhandbuch für iOS sieht es so aus, als ob zwischen NSDOCUMENT- und UIDOCUMEND-abgeleiteten Klassen eine Codierungs-/Dekodierungskonvertierung erforderlich sind. Ich wünschte, es gibt einen universellen Serialisierungsmechanismus, der mit allen Geräten im gesamten Apple -Ökosystem kompatibel ist. In dieser Hinsicht werden alle Gedanken, Ideen, Tipps geschätzt.

Kann ich in meiner Mac OSX -Anwendung eine uidokument abgeleitete Klasse verwenden und das Dokument wird mit iOS kompatibel?

War es hilfreich?

Lösung

Nein, Sie können in einer Kakaoanmeldung nicht Uidokument verwenden oder unter Klassen nicht verwenden, da Uidokument in Kakao nicht vorhanden sind.

Sowohl im NSDocument als auch im Uidocument bestimmen Sie das von Ihnen verwendete Format. Implementieren Sie sie also beide, um das gleiche Format für die Ausgabe und die Eingabe zu verwenden.

Es wäre nicht zu schwierig, den Präprozessor zu verwenden, um einen Dateipaar einzurichten, der eine Unterklasse von NSDocument implementiert, wenn Sie für den Mac und das Uidokument bauen, wenn Sie für iOS bauen. Dies würde Sie daran hindern, eine nicht übereinstimmende Serialisierung und Deserialisierung implementiert zu haben, da Sie jeweils nur eine Kopie haben und sie auf beiden Plattformen verwenden würden.

Andere Tipps

Peters Antwort oben ist korrekt, aber ich habe einen Vorschlag, der den C-Pre-Processor (nicht in Swift nicht verfügbar) betrifft, der ein bisschen mehr Kakao-ähnlich ist.

Sehen Sie sich die WWDC 2014 -Sitzung 233 an, um Ihre iOS- und Mac -Apps in einem einzigen Projekt als separate Ziele einzurichten, und verwenden Sie dann Kategorien in Ihrer Dokumentklasse, um die gemeinsame Funktionalität zu implementieren:

CommonFunctions.h    

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

-

CommonFunctions.m

@implementation AppDocument (CommonFunctions)

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

@end

Dein AppDocument Die Klasse würde 2 verschiedene Klassen haben, die von UI/NSDocument nach Bedarf für jede Plattform/jedes Ziel erben, und jedes Ziel würde die Kategorien von einem gemeinsamen Ort anziehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top