Frage

In einer nicht dokumentbasierten Mac OS X (10.7 Lion) -Anwendung möchte ich die iCloud-Unterstützung einbeziehen, damit ich Daten für andere Instanzen derselben Anwendung auf anderen Macs (nicht für iOS) freigeben kann Geräte). Nachdem ich ein wenig in der Apple-Dokumentation gesurft habe, habe ich festgestellt, dass ich einen Schlüsselwertlisten-Speicher in iCloud verwenden sollte, da das Dokument, das ich hochladen möchte, nur ein Array von benutzerdefinierten Objekten enthält (die einfache Eigenschaften wie einen Namen (Zeichenfolge) haben. , Datum (Datumsobjekt), ...). Diese Datei ist das einzige, was ich in iCloud hochladen möchte. In der Anwendung habe ich bereits das Speichern der Datei auf der Festplatte mithilfe des NSFileManager von - (void)writeData:(NSData*)data toPath:(NSString *)path implementiert (oder was auch immer es war, ich habe es vergessen). Es wird erneut mit NSFileManager aus der Datei geladen (mit - (NSData *)dataInFileAtPath:(NSString*)path oder was auch immer). Die Datei wird in einem Unterverzeichnis im Application Support-Verzeichnis des Benutzers gespeichert. Es wird gespeichert, wenn dem Array ein neues Element hinzugefügt oder ein Element im Array geändert wird.

Ich habe mich gefragt, ob jemand einen Link zu einem Lernprogramm bereitstellen oder mich in die richtige Richtung weisen kann, um diese Datei in iCloud zu schreiben und sie dann auf anderen Instanzen derselben Anwendung erneut herunterzuladen. Alle Tutorials und Dokumentationen, die ich gefunden habe, waren nur für iOS. Jede Hilfe wird sehr geschätzt!

Vielen Dank im Voraus!

Ben

War es hilfreich?

Lösung

Verwenden Sie einfach NSUbiquitousKeyValueStore , der dem NSUserDefaults sehr ähnlich ist, nur dass er in iCloud geschrieben wurde. Sie sollten den iCloud Storage lesen Abschnitt des Mac App-Programmierhandbuchs, aber was Sie tun müssen, kann so einfach sein, wie Berechtigungen auf der Registerkarte Zusammenfassung Ihres App-Ziels in Xcode zu aktivieren und dann Folgendes zu tun:

NSData *dataToStore = [NSKeyedArchiver dataWithRootObject:yourArray];
[[NSUbiquitousKeyValueStore defaultStore] setData:dataToStore forKey:@"yourKey"]; 

Um Ihre Daten abzurufen, führen Sie einfach aus

NSData *retrievedData = [[NSUbiquitousKeyValueStore defaultStore] dataForKey:@"yourKey"];
NSArray *retrievedArray = [NSKeyedUnarchiver unarchiveObjectWithData:retrievedData];

Die einzige Einschränkung hierbei ist, dass diese Objekte, damit dies mit einem Array von benutzerdefinierten Objekten funktioniert, alle NSCoding-Protokoll . Dies ist nur eine Frage der Implementierung von zwei Methoden; Hier ist ein gutes Tutorial .

P.S. Sie verwenden dieselben APIs, unabhängig davon, ob Sie für OS X oder iOS entwickeln. Es gibt also keinen Grund, warum Sie nicht einfach einem iOS-Tutorial für iCloud-Speicher folgen können.

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