私はゲームを作っています。アプリを閉じると(マルチタスクマネージャで閉じる)、私のすべてのデータはなくなりました!だから、私の質問はとても簡単です:データを保存するには?iOSでデータを保存するには
答えて
スコアとレベルを保存するとします。これは、両方ともdataHolderというオブジェクトのプロパティです。あなたは、あなたがそれ(実際にはそのsharedInstance
)にアクセスし、そこからについてはあまり心配する必要はありませんので
DataHolderは、シングルトンとして作成することができます。
それはコードが少し次のようになります:
DataHolder.h
#import <Foundation/Foundation.h>
@interface DataHolder : NSObject
+ (DataHolder *)sharedInstance;
@property (assign) int level;
@property (assign) int score;
-(void) saveData;
-(void) loadData;
@end
DataHolder.m
NSString * const kLevel = @"kLevel";
NSString * const kScore = @"kScore";
@implementation DataHolder
- (id) init
{
self = [super init];
if (self)
{
_level = 0;
_score = 0;
}
return self;
}
+ (DataHolder *)sharedInstance
{
static MDataHolder *_sharedInstance = nil;
static dispatch_once_t onceSecurePredicate;
dispatch_once(&onceSecurePredicate,^
{
_sharedInstance = [[self alloc] init];
});
return _sharedInstance;
}
//in this example you are saving data to NSUserDefault's
//you could save it also to a file or to some more complex
//data structure: depends on what you need, really
-(void)saveData
{
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:self.score] forKey:kScore];
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:self.level] forKey:kLevel];
[[NSUserDefaults standardUserDefaults] synchronize];
}
-(void)loadData
{
if ([[NSUserDefaults standardUserDefaults] objectForKey:kScore])
{
self.score = [(NSNumber *)[[NSUserDefaults standardUserDefaults]
objectForKey:kScore] intValue];
self.level = [(NSNumber *)[[NSUserDefaults standardUserDefaults]
objectForKey:kLevel] intValue];
}
else
{
self.level = 0;
self.score = 0;
}
}
@end
必要なところで#import "DataHolder.h"を忘れたり、単に...-Prefix.pch
に入れてください。
あなたはappDelegate
方法で実際の読み込みと保存を行うことができます:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[DataHolder sharedInstance] saveData];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[[DataHolder sharedInstance] loadData];
}
あなたは[DataHolder sharedInstance].score
と[DataHolder sharedInstance].level
でどこからでもあなたのスコアとレベルのデータにアクセスすることができます。
これは単純な作業のためにやり過ぎのように思えるかもしれないが、それは確かにきちんと物事を維持するのに役立ちますし、それが(通常は溶液への迅速な&汚いパスである)appDelegate
内のすべてのデータを維持避けるために、あなたを助けることができます。
あなたはCoreData、SqlLite内のデータやNSUserDefaults 更新 レルムを保存することができますまた、オプションで、実装が非常に簡単です。
単純なフラットファイル。おそらくJSON形式のデータやCSV形式を含んでいます。 –
どちらが安全ですか? –
あなたは、NSUserDefaultsにそれを保存しないでくださいいくつかの物事を持っている場合。 Realm SQLやコアデータのような他のものに保存し、暗号化を使用してみてください。トークンのユーザー名とパスワードのようなものがいくつかある場合は、キーチェーンを使用してください –
[NSUserDefaults standardUserDefaults]
は、ユーザーの設定や設定などの少量のデータに適しています。一般的には、これを使用して、キャラクターの好み、武器の好み、その他のようなグローバル値を定義するさまざまなデータを保存することができます。
ゲームレベルの詳細や成果や武器の在庫などの大量のデータ。あなたはコアデータのようなものを使いたいでしょう。これは、データスキーマの変更に伴って容易に移行できる、より正式なデータベースです。 Core DataおよびCore Data Programming Guide
より一般化されたソリューションにはRealmを使用することをおすすめします。
スウィフト3
UserDefaults.standard.set(„some value”, „key”)
let value = UserDefaults.standard.string(„key”)
あなたも、IOSのデータを保存するには、いくつかの方法があります。この
を使用してアレイを保持することができます。
- UserDefaults - 少量のデータを保存する優れた方法です。
- ログインデータやパスワードのような安全で分かりやすいデータへのキーチェーンの安全な場所。
- Sqliteをデータベース - アプリケーションが構造化データの膨大な量
- CoreDataを持っている場合 -
- の保存ファイルを保存する必要がありますオブジェクトを記述するオブジェクトグラフに基づいて - もちろん、あなたはまた、直接のすべてのタイプを保存することができますファイルをファイルシステムにコピーします。ただし、セキュリティ上の理由から、アプリケーションコンテナ内のファイルシステムにアクセスすることはできます。
- コアデータとSQLiteデータベースに最適な代替方法を使用する
- NSKeyedArchiverとNSKeyedUnarchiver - 少量のオブジェクトに最適です。 //私は思うので、
REF - http://www.thomashanning.com/data-persistence-ios/あなたが保存しようとどのくらいされているデータのどのような種類の
- 1. iOSでXMLにデータを保存する
- 2. IOS:データをテキストファイルに保存
- 3. コアデータにjsonデータを保存するiOS
- 4. iOSドキュメントディレクトリ内のデータを保存する
- 5. iOSベースのCMSアプリにデータを保存する方法は?
- 6. iosのNSCacheにデータを保存する方法は?
- 7. iOSにストリーミングビデオを保存するには?
- 8. Pythonでデータを保存するには?
- 9. iOSアプリケーションにデータを保存するのに最適な選択
- 10. iOSでコアデータを使用してデータを保存する
- 11. iOSの健康キットアプリで血圧データを保存する方法
- 12. アンドロイドとiOSのデータをクロスプラットフォームで保存する
- 13. データをローカルに保存する最善の方法(IOS - xcode)
- 14. IOSデバイスにページを残す前にローカルストレージにデータを保存する方法は?
- 15. クエリのデータをFirebase iOSの文字列で保存するには?
- 16. ユーザーデータを保存するiOS
- 17. データベースに保存するのではなく、データをメモリに保存する
- 18. データを*テーブルビュー*に保存するには?
- 19. Firebaseにデータを保存するには?
- 20. iPhoneにデータを保存するには?
- 21. iOSネイティブアプリでウェブからデータを保存できますか?
- 22. iOS - データベースに保存
- 23. React Nativeを使ってiOSにデータを安全に保存する方法は?
- 24. iOS - データの保存に使用するもの
- 25. QRコードに保存/保存できるデータ/情報の量は?
- 26. データを保存するには
- 27. ios core audio:aurioTouchを編集してpcmデータを保存する
- 28. AS3 iOSでローカルファイルを保存する
- 29. iOSで画像を保存する
- 30. iOSフレームワークでデベロッパーキーを保存する
? –