の保存方法と保存場所に問題があります。ユーザーがアプリを終了するとき、またはバックグラウンドに入るときに、別のユーザーからカウントを保存する必要がありNSUserDefaults
ます。しかし、私がそれを削除しているときに私のカウントが更新されているので、私が正しいものを保存するかどうかはわかりません。保存できません。誰かが助けてくれることを願っています。ありがとうございました。applicationDidEnterBackground
applicationWillTerminate
NSArray
NSUserDefaults
UIViewController
integer
NSArray
UIView
viewDidLoad
viewDidAppear
4 に答える
別の ViewController から保存する必要がある場合はNSMutableArray
、appDelegate を追加することをお勧めします。オブジェクトを削除または追加するたびに、次のように上書きされるため、配列の数を保存します。
[[NSUserDefaults standardUserDefaults] setInteger:[yourArray count] forKey:@"Count"];
[[NSUserDefaults standardUserDefaults] synchronize];
次のように取得します。
NSInteger count = [[NSUserDefaults standardUserDefaults] integerForKey:@"Count"];
EDIT : synchronize
: 永続ドメインへの変更をディスクに書き込み、変更されていないすべての永続ドメインをディスク上のものに更新します。
NSUserDefaults_Classを参照してください。定期的に呼び出されることが明確に示されているため、呼び出しを待つ必要はありません。
このコードを使用して値を保存できますNSUserDefaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:yourArray forKey:@"YourKey"]
[defaults synchronize];
NSUserDefault の使用の詳細については、これを確認してください
[[NSUserDefaults standardUserDefaults] setBool:<#(BOOL)#> forKey:<#(NSString *)#>]
、これはブール値でsetInt/setFloat/SetDouble etc
あり、さらにObjectiveCobjects
を追加しsetValue/setObject
ます。[[NSUserDefaults standardUserDefaults] setValue:<#(id)#> forKey:<#(NSString *)#>]; [[NSUserDefaults standardUserDefaults] setObject:<#(id)#> forKey:<#(NSString *)#>];
値を取得するには、
getters
likeboolForKey
([[NSUserDefaults standardUserDefaults] boolForKey:<#(NSString *)#>]
)を使用できますintForKey etc.
。removeObjectForKey
オブジェクトを削除するために使用します。
appDelegate クラスで必要な NSMutableArray を作成します。つまり、NSMutableArray iVar のプロパティを作成します。その後、任意のクラスで内容を更新、追加、削除できます。したがって、applicationDidEnterBackground で配列カウントを取得し、applicationWillTerminate 通知関数でappDelegate 関数自体と配列カウントは正確である必要があります。
yourAppDelegate.h で
作成 ..
@interface yourAppDelegate : UIResponder <UIApplicationDelegate>{
NSMutableArray *myArray;
}
@property(nonatomic,strong)NSMutableArray *myArray; //replace strong by retain if ios <5
yourAppDelegate.m で
@synthesize myArray;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *
)launchOptions{
self.myArray = [NSMutableArray array];
}
appDelegate.m ファイルの必要な関数でさらに
- (void)applicationWillTerminate:(UIApplication *)application
{
[[NSUserDefaults standardDefaults]setValue:[NSNumber numberWithInt:[self.myArray count] forKey:@"myOwnKey"]];
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
他のクラスでこの配列にオブジェクトを追加する場合は、 yourAppDelegate のデリゲートを作成するだけです。
たとえば、クラス A の viewDidLoad では、
-(void)viewDidLoad{ // assuming viewController A
YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplicatio sharedApplication]delegate];
[appDelegate.myArray addObject:@"1232"];
}