0

当应用程序终止时,我希望保存几个数组。我在应用程序委托中使用 NSUserDefaults 实现了这一点。任何人都可以看看我的代码,看看有什么问题吗?它没有任何作用。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    workouts = [NSMutableArray arrayWithObjects:nil];
    menu = [NSMutableArray arrayWithObjects:@"Home",nil];
    workoutNames = [NSMutableArray arrayWithObjects:nil];
    routinesMade = [NSMutableArray arrayWithObjects:nil];
    test = [NSMutableArray arrayWithObjects:nil];

    defaults = [NSUserDefaults standardUserDefaults];
    self.workouts = [defaults objectForKey:@"workouts"];
    self.menu = [defaults objectForKey:@"menu"];
    self.workoutNames = [defaults objectForKey:@"workoutNames"];
    self.routinesMade = [defaults objectForKey:@"routinesMade"];


    return YES;
}


- (void)applicationWillTerminate:(UIApplication *)application
{

    defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:workouts forKey:@"workouts"];
    [defaults setObject:menu forKey:@"menu"];
    [defaults setObject:workoutNames forKey:@"workoutNames"];
    [defaults setObject:routinesMade forKey:@"routinesMade"];
    [defaults synchronize];

}

顺便说一句,我在头文件中声明了默认值。多谢你们!

4

2 回答 2

4

我想我知道问题是什么。您的代码在applicationWillTerminate:方法内。除非您明确设置应用程序不在后台运行(通过设置“应用程序不在后台运行”键),否则几乎可以肯定此方法永远不会被调用,因为当它被系统终止时,它将已经被暂停。

在这种情况下,请考虑在applicationDidEnterBackground:方法中保存您需要的信息。

希望这可以帮助!

于 2013-07-08T23:57:31.640 回答
0

锻炼和自我锻炼是一种属性,我正确吗?所以你创建数组

workouts = [NSMutableArray arrayWithObjects:nil];

然后用 null 覆盖它,因为[defaults objectForKey:@"workouts"]包含 null

于 2013-07-09T00:06:16.320 回答