【问题标题】:IOS: store an array with NSUserDefaultIOS:使用 NSUserDefault 存储数组
【发布时间】:2011-11-26 02:36:59
【问题描述】:

我想用NSUserDefault存储一个数组,然后,我输入applicationDidEnterBackground

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];

application didFinishLaunchingWithOption

myArray= [[NSMutableArray alloc] 
          initWithArray:[[NSUserDefaults standardUserDefaults] 
           objectForKey:@"myArray"]];

多任务设备可以,但非多任务设备,我该如何解决?

【问题讨论】:

    标签: ios objective-c xcode nsarray nsuserdefaults


    【解决方案1】:

    NSUserDefaults中的对象存储在-applicationWillTerminate:中,如果它还没有通过-applicationDidEnterBackground:的调用保存(即检查是否支持多任务处理,如果支持,那么不要保存它,因为它是已经保存了。)

    - (void) applicationWillTerminate:(UIApplication *) app {
        if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] &&
           ![[UIDevice currentDevice] isMultitaskingSupported]) {
           [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
        }
    }
    

    【讨论】:

    • 正如另一个答案中指出的那样,您需要在设置对象后同步默认值。 [[NSUserDefaults standardUserDefaults] 同步];
    【解决方案2】:

    将 NSUserDefaults 保存在

    - (void)applicationWillTerminate:(UIApplication *)application 
    

    【讨论】:

      【解决方案3】:

      设置

      [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
      

      applicationWillTerminate
      

      【讨论】:

        【解决方案4】:

        前面的答案都是正确的,但请注意,applicationDidEnterBackgroundapplicationWillTerminate 都不能保证在所有情况下都被调用。您通常最好在重要数据发生变化时存储它。

        【讨论】:

          【解决方案5】:

          在进入后台之前不要忘记同步缓冲区:

          [[NSUserDefaults standardUserDefaults] synchronize];
          

          【讨论】:

            【解决方案6】:

            不要忘记在您尝试保存且包含在数组中的对象内使用 encodeWithCoder 和 initWithCoder

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多