2010-07-05 2 views
0

Привет всем, это должна быть простая задача, но по какой-то причине я делаю это сложнее ... Я пытаюсь сохранить некоторый текст из XML-файла в NSString. Но когда я его отлаживаю, строка говорит «Out of scope».сохранение NSString, а затем чтение его обратно

Вот мой код:

в моем файле .h:

@interface RootViewController : UIViewController<MBProgressHUDDelegate> { 
    NSString *thePW; 
} 

и мой .m файл:

NSString *thePW; 
... 
- (void)viewDidLoad { 
... 
    if(e == nil){ 
     NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

     thePW = response; // <-- this is where it has "Out of scope" 
     [response release]; 
    } 
} 

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex != [alertView cancelButtonIndex]) 
    { 
     if (thePW == @"0000") 
     { 
      NSLog(@"correct!"); 
     } 
    } 
} 

ответ

0

Вы также можете попробовать:

thePW = [NSString stringWithFormat:@"%@",response]; // to assign the string value. 

и при сравнении строк:

(thePW isEqualToString @"0000") 
0

Отбросьте переопределение thePW в файле .m

Кроме того, если вы хотите сохранить значение ответа в PW, обязательно сохраните его.

+0

вынул повторное объявление в файле .m, но он все еще имеет «Вне области» на него, когда я проверяю его в IF() ... Я также попытался сохранить его, используя это: @property (неатомный, сохраняющий) NSString * thePW; но я все равно получаю то же самое «вне сферы действия». – StealthRT

+1

Если вы сделали это свойством, назначьте его 'self.thePW = response;' поэтому вызывается метод setter. – drawnonward

+0

обратный: делая это, он дает мне ошибку «*** Завершение приложения из-за неперехваченного исключения» NSInvalidArgumentException », причина:« *** - [RootViewController thePW]: нераспознанный селектор, отправленный в экземпляр 0x3b04880 '" – StealthRT

Смежные вопросы