2010-04-17 3 views
0

Я следил за указаниями в нескольких книгах и предложениях на некоторых форумах, но у меня проблемы с отключением моего приложения, когда я пытаюсь настроить пользовательские настройки. У меня есть следующие строки на моем «Done» метод в моем flipscreenViewController:Как и где следует устанавливать и загружать NSUserDefaults в приложении-утилите?


    - (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]; 
    } 

Если кто-то там может пожалуйста помочь мне понять, что я делаю неправильно это было бы высоко оценено.

Chuck

ответ

1

Вы должны сохранить свои предпочтения всякий раз, когда это имеет смысл делать это в контексте вашего приложения. Если ваш код сбой, вам нужно познакомиться с отладчиком и выяснить, почему. Если вам нужна помощь в этом, вам необходимо обеспечить сканирование стека, по крайней мере.

+0

+1 и я второй, что БОЛЬШОЕ ВРЕМЯ ... вам гораздо проще просто использовать отладчик, чем кому-либо еще, чтобы найти иглу в том стоге сена, который вы предоставили с помощью своего вопроса. Greywolf210 – Till

+0

При использовании отладчика единственная проблема Я получаю ответ: «GDB: запрограммированный сигнал:« EXC_BAD_INSTRUCTION »« Я тоже искал эту ошибку в stackoverflow, и, похоже, это происходит во многих разных ситуациях, когда я не уверен, где находится соединение. Я noob с SDK, но я пытаюсь учиться, и я ценю все ваши данные. Где-то еще я должен смотреть? Что-то еще я должен попробовать? – Greywolf210

+0

Отладчик, очевидно, останавливает выполнение - он должен отображать callstack для вас (обычно в верхней левой части XCode). Посмотрите на самый популярный метод, который вы написали, пока отладчик все еще активен. – Till