質問: Objective-CにてiCloudに対応したアプリを製作しています。 アプリはsqliteを用いたCoreDataとカメラで撮影した画像ファイルを保存しています。 sqliteのiCloud対応については下記URLの「iCloud Core Data storage を使う方法」を 参考にして連携をすることができました。 http://glassonion.hatenablog.com/entry/20120728/1343471940 ただ、画像ファイルなどのiCloudへの保存方法がいまいちよく分かっていません。 ``` [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; ``` iCloudが端末上で有効になっている際は上記コードから得られるiCloud用のURLに保存することで iCloud状に保存され、データが復元できることも確認できたのですが 問題はユーザーがiCloudの有効/無効を切り替えた場合です。 iCloudが無効になると、先ほどのコードは`nil`を返すため 画像ファイルはローカルのDocuments以下に保存することになると思いますが すでにiCloud用のURLに保存していた画像ファイルをローカルに保存しなおそうにも `nil`しか返さないので、ローカルにコピーできません。 何かいい方法はございませんでしょうか・・・・
回答: ユーザーが任意でiCloudの無効しているのにも関わらず、iCloudから無理やり情報取得するのは考え方からして間違っているかと思います。 iCloudとの連携が必須であれば、画像取得する前にiCloudの有効/無効状態を確認し、無効であればユーザーに対して、iCloudの有効を促すアラートを表示すると良いのではと思いました。 iCloudに依存しないアプリであれば、Documentsに保存する方が良いと思います。 > > 追記 > > > 基本的には、iCloudを参照し、何かしら問題(iCloudの無効状態又は、通信環境が不安定)で取得に失敗するようであれば、ローカル(Documents)に保存した写真を使用するでも良いのかなと思いました。