2012-01-16 12 views
4

Mac OS X(10.7 Lion)非ドキュメントベースアプリケーションでは、iCloudサポートを含めて、同じアプリケーションの他のインスタンス間でデータを共有することができますmac(iOSデバイスではありません)。アップルのドキュメントをちょっとサーフィンした後、アップロードしたいドキュメントに名前(文字列)などの単純なプロパティを持つカスタムオブジェクトの配列のみが含まれているため、iCloudでキー値リストストレージを使用する必要があることがわかりました。 、日付(日付オブジェクト)、...)。このファイルはiCloudにアップロードする唯一のファイルです。アプリケーション内では、すでにファイルをNSFileManager- (void)writeData:(NSData*)data toPath:(NSString *)path(またはそれが何であれ、私は忘れてしまった)を使ってファイルに保存して実装しました。これはNSFileManagerを使用してファイルから再度ロードされます(- (NSData *)dataInFileAtPath:(NSString*)pathなどを使用)。このファイルは、ユーザーのApplication Supportディレクトリのサブディレクトリに格納されています。新しい項目が配列に追加されるか、配列内の項目が変更されるたびに保存されます。Mac OS X LionのアプリケーションでのiCloudサポート

誰かがチュートリアルへのリンクを提供したり、正しい方向で私を指し示したりして、そのファイルをiCloudに書き込んだり、同じアプリケーションの他のインスタンスでもう一度ダウンロードしたりすることができますか?私が見つけたすべてのチュートリアルとドキュメンテーションはiOS専用です。どんな助けでも大歓迎です!

ありがとうございました!

ベン

答えて

3

ちょうどそれがiCloud上に書かれていることを除いて、多くNSUserDefaultsのようである、NSUbiquitousKeyValueStoreを使用しています。あなたは、MacのAppプログラミングガイドのiCloud Storageセクションをお読みください、しかし、何をする必要があるXcodeでアプリのターゲットの概要]タブで資格を有効にし、その後のようなものをやってような単純なことがあります

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

次に、あなたのデータを取得するために、ちょうど

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

を行い、ここで注意点が1つ、これは、カスタムオブジェクトの配列で動作するため、これらのオブジェクトはすべてNSCoding protocolを実装しなければならないということです。これは2つの方法を実装するだけの問題です。ここでは良いtutorialです。

P.S. OS XまたはiOS向けに開発している場合でも、同じAPIを使用しているため、iOSのチュートリアルのiCloudストレージに準拠できないという理由はありません。

関連する問題