1

私はプログラミングが初めてで、1つの問題があります。2 つのビューでアプリを作成します。1 つ目は tableviewcontroller で、2 つ目はビュー コントローラーです。2番目のビューから、perepareForSegueメソッドを介してテーブルビューにデータを送信します。私のデータ (文字列) は NSMutableArray であり、この MutableArray は、アプリが appDelegate.m で EnterBackgoung を実行した後に UsedDefault に保存したいのですが、再度ロードしたいのですが、何も起こりませんでした。私は自分のコードを appDelegate.m の appDidBecomeActive に入れました。すでに最初のビュー viewDidLoad に書き込もうとしていますが、アクションはありません。新しいアプリの起動後、MuttableArray はまだ空です。

ここに私のコードがあります:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.flipsideView.zoznamFunkcii forKey:@"NSMutableArray"];
[defaults synchronize];
}

flipsideView は私の最初のビューであり、zoznamFunkcii は私の NSMuttable 配列です

これが私のロード方法です:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];
self.flipsideView.zoznamFunkcii = [NSMutableArray arrayWithArray:[defaults  objectForKey:@"NSMutableArray"]];
}

誰でもそれで私を助けることができますか?なぜうまくいかないのかわかりません。

4

2 に答える 2

0

空の NSMutableArray を NSUserDefaults に保存しています。もちろん、ロードされた配列も空になります。

コメント付きの保存コードは次のとおりです。

// overwrite zoznamFunkcii with empty array
self.flipsideView.zoznamFunkcii = [[NSMutableArray alloc]init];

NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];

// save this empty array to nsuserdefaults
[defaults setObject:self.flipsideView.zoznamFunkcii forKey:@"NSMutableArray"];

保存コードはおそらく次のようになります。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:self.flipsideView.zoznamFunkcii forKey:@"NSMutableArray"];
}

NSUserDefault は可変オブジェクトを保存しないため、復元コードは次のようになります。

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    NSUserDefaults*defaults = [NSUserDefaults standardUserDefaults];
    self.flipsideView.zoznamFunkcii = [NSMutableArray arrayWithArray:[defaults objectForKey:@"NSMutableArray"]];
}

配列内のオブジェクトが 、 、 、 、 のインスタンスではない場合NSDataNSStringまたはNSNumber最初NSDateNSArray配列NSDictionaryをエンコードする必要があります。その方法の詳細については、この質問を参照してください。

于 2013-09-08T09:47:52.160 に答える