0

我在一些论坛上遵循了几本书和建议中的指示,但是当我尝试设置用户首选项时,我的应用程序崩溃了。我的 FlipscreenViewController 中的“完成”方法中有以下几行:


    - (IBAction)done 
   {
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setBool:musicOnOff.on forKey:kMusicPreference];
    [userDefaults setObject:trackSelection forKey:kTrackPreference];
    [self.delegate flipsideViewControllerDidFinish:self];   
   }

以及我的 mainViewController 中的以下方法:


    -(void)initialDefaults
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setBool:YES forKey:kMusicPreference];
    [userDefaults setObject:@"Infinity" forKey:kTrackPreference];
}

-(void) setvaluesFromPreferences
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];   
    BOOL musicSelection = [userDefaults boolForKey:kMusicPreference];
    NSString *trackSelection = [userDefaults objectForKey:kTrackPreference];
    if(musicSelection == YES)
    {
        if([trackSelection isEqualToString:@"Infinity"])
        song = [[BGMusic alloc]initWithPath:
                       [[NSBundle mainBundle] pathForResource:
                       @"Infinity" ofType:@"m4a"]];
        else if([trackSelection isEqualToString:@"Energy"])
        song = [[BGMusic alloc]initWithPath:
                       [[NSBundle mainBundle] pathForResource:
                       @"Energy" ofType:@"m4a"]];       
        else if([trackSelection isEqualToString: @"Enforcer"])
        song = [[BGMusic alloc]initWithPath:
                       [[NSBundle mainBundle] pathForResource:
                       @"Enforcer" ofType:@"m4a"]];     
        else if([trackSelection isEqualToString: @"Continuum"])     
        song = [[BGMusic alloc]initWithPath:
                       [[NSBundle mainBundle] pathForResource:
                       @"Continuum" ofType:@"m4a"]];        
        else if([trackSelection isEqualToString: @"Pursuit"])
        song = [[BGMusic alloc]initWithPath:
                       [[NSBundle mainBundle] pathForResource:
                       @"Pursuit" ofType:@"m4a"]];

        [song setRepeat:YES];
        counter = 0;
        }
        else 
        [song close];
    }

如果有人可以帮助我看看我做错了什么,将不胜感激。

查克

4

1 回答 1

1

只要在应用程序的上下文中有意义,您就应该保存您的首选项。如果您的代码崩溃,那么您需要熟悉调试器并找出原因。如果您需要这方面的帮助,那么您至少需要提供堆栈爬网。

于 2010-04-17T07:28:56.967 回答