私はiCloudのアイデアに少し苦労しており、より一般的な質問をここに投稿しました。私の最大の問題は、アプリのサンドボックスにある古き良きドキュメント フォルダーにユーザーのデータを配置するのをやめるべきかどうかを決定することです。私の問題を説明するには:
私が見る限り、ドキュメントは答えを出していません。さまざまな txt ファイルを処理するアプリがあるとします。アプリを起動したら、次のように txt ファイルがクラウドにあるかどうかを確認するだけです。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"AppDelegate: app did finish launching");
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
// (1) iCloud: init
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (ubiq) {
NSLog(@"User has iCloud enabled! Let's get the txt files from the cloud.");
[self loadDocument];
} else {
NSLog(@"User doesn't have iCloud enabled. App is thus worthless.");
}
return YES;
}
次に、クラウドに txt ファイルがあるかどうかを確認し、ある場合はそれらをロードする方法があります。そうでない場合は、クラウドに新しい txt ファイルを作成するだけです。
これは、アプリがドキュメント フォルダーにデータを保存しないことを意味します。私が理解している限り、すべてが私のデバイスのローカル iCloud ストレージ (ユーザーがオフラインの場合にもアクセス可能) またはクラウドのいずれかにあります。つまり、テキスト ファイルはデバイスとクラウドの 2 つの場所に存在します。
つまり、ローカルのドキュメント フォルダに 3 つ目のコピーを保存する必要はありませんよね? それとも、これは私が見落とした何らかの理由で不可欠ですか? つまり、iCloud をユーザーに提供する場合、ローカルのドキュメント フォルダを何に使用すればよいのでしょうか? (そして、iCloud にサインアップしない人を単純に無視できますか?)
編集: 明確にするために、アプリのサンドボックス内の標準ドキュメント フォルダーについて話しているときは、次のことを意味します。
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];