1

の保存方法と保存場所に問題があります。ユーザーがアプリを終了するとき、またはバックグラウンドに入るときに、別のユーザーからカウントを保存する必要がありNSUserDefaultsます。しかし、私がそれを削除しているときに私のカウントが更新されているので、私が正しいものを保存するかどうかはわかりません。保存できません。誰かが助けてくれることを願っています。ありがとうございました。applicationDidEnterBackgroundapplicationWillTerminateNSArrayNSUserDefaultsUIViewControllerintegerNSArrayUIViewviewDidLoadviewDidAppear

4

4 に答える 4

1

別の ViewController から保存する必要がある場合はNSMutableArray、appDelegate を追加することをお勧めします。オブジェクトを削除または追加するたびに、次のように上書きされるため、配列の数を保存します。

 [[NSUserDefaults standardUserDefaults] setInteger:[yourArray count] forKey:@"Count"];
 [[NSUserDefaults standardUserDefaults] synchronize];

次のように取得します。

 NSInteger count = [[NSUserDefaults standardUserDefaults] integerForKey:@"Count"];

EDIT : synchronize: 永続ドメインへの変更をディスクに書き込み、変更されていないすべての永続ドメインをディスク上のものに更新します。

NSUserDefaults_Classを参照してください。定期的に呼び出されることが明確に示されているため、呼び出しを待つ必要はありません。

于 2012-10-03T09:51:26.403 に答える
0

このコードを使用して値を保存できますNSUserDefaults

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:yourArray forKey:@"YourKey"]
[defaults synchronize];
于 2012-10-03T14:35:22.923 に答える
0

NSUserDefault の使用の詳細については、これを確認してください

  • [[NSUserDefaults standardUserDefaults] setBool:<#(BOOL)#> forKey:<#(NSString *)#>]、これはブール値でsetInt/setFloat/SetDouble etcあり、さらにObjectiveC objectsを追加しsetValue/setObjectます。

    [[NSUserDefaults standardUserDefaults] setValue:<#(id)#> forKey:<#(NSString *)#>];
    [[NSUserDefaults standardUserDefaults] setObject:<#(id)#> forKey:<#(NSString *)#>];
    
  • 値を取得するには、getterslike boolForKey( [[NSUserDefaults standardUserDefaults] boolForKey:<#(NSString *)#>])を使用できますintForKey etc.

  • removeObjectForKeyオブジェクトを削除するために使用します。

于 2013-05-03T06:38:39.243 に答える
0

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"];
}
于 2012-10-03T09:51:37.440 に答える