- 締切済み
[OBJ-C]アプリ削除後もデータ保持
iPhone向けのゲームアプリを作成しているのですが、 表題の事ができずに困っています。 ゲームアプリがiPhone上から削除されても、 セーブデータを残すような仕組みを作りたいです。 NSUserDefault、NSKeyedArchiver、plist等にて サンプルオブジェクトを作り実機にてテストしてみた結果 やはりどれもアプリ内にデータを保持しているようでして アプリを削除するとデータが削除されてしまいます。 アプリが削除されてもデータを保持する方法を教えて下さい、 宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
アプリ削除後もデータを残すとして、そのデータはどうやって削除するつもりですか? アプリは削除してしまってますね? どうしましょう? ということで、NSUserDefaultsなどはアプリを削除するとそれに関連するファイルは削除されるようになっています。ですので、普通はデータを残すというのはあまりおすすめできません。が、できないことはないでしょう。 データの形式にもよりますが、NSStringだのNSDictionaryだのはwriteToFile:メソッドを持っていますから、普通にファイルに保存出来ますよ。ただし保存場所に注意する必要があります。ドキュメントディレクトリ内でないとアクセス権の関係で保存できないはずです。場所をきちんと指定すればファイルに保存出来ます。こんな感じで。 NSArray* dir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString* path = [[dir objectAtIndex:0] stringByAppendingPathComponent:@"ファイル名"]; [保存するオブジェクト writeToFile:path atomically:YES]; あるいは、発想を転換して、データをサーバーに保存するようにしてはいかがですか? そうすればクライアントの環境に関係なくデータは保存できますし、iPhoneを買い換えてもデータを引き継ぐことができます。
お礼
ご回答が非常に遅くなりまして申し訳ありません。 >アプリ削除後もデータを残すとして、そのデータはどうやって削除するつもりですか? アプリは削 >除してしまってますね? どうしましょう? 全くもっておっしゃる通りです、 そのあたりの仕様をどうするのか全く気にも留めていませんでした iPhone内に残すのは却下します。 >データの形式にもよりますが、NSStringだのNSDictionaryだのはwriteToFile:メソッドを持っていますか >ら、普通にファイルに保存出来ますよ。ただし保存場所に注意する必要があります。ドキュメントデ >ィレクトリ内でないとアクセス権の関係で保存できないはずです。場所をきちんと指定すればファイ >ルに保存出来ます。こんな感じで。 すいません時間のある時に試してみます。 このあたりのメソッドはシミュレーターでみるとNSHomeDirectoryの下にある Documentsの中にしか保存できないと思っていたため、 実機でも同じ位置にしか保存されないと考え除外していました。 >あるいは、発想を転換して、データをサーバーに保存するようにしてはいかがですか? そうすれば >クライアントの環境に関係なくデータは保存できますし、iPhoneを買い換えてもデータを引き継ぐこ >とができます。 今この部分が課題になっています、 サーバーの専門家ではないので サーバーチームの方と相談しなければいけないのですが、 ゲームデータをすべてサーバーに保存するとして ユーザーが10万人いて、その1割のデータ保存領域を確保したとして サーバーがの容量が多くなりすぎると考えています。 iCloudを使ってユーザーに保存を促す方法が一番コストの面でベターではないかと考えています。