2015-12-01 2 views
0

У меня есть раздражающая проблема, которую я пытаюсь обойти, но ее просто не происходит, так что либо я пропускаю что-то глупое, либо я делаю это неправильно.сравнение строк с isEqual не работает полная функция iOS

в основном идентификатор, как проверить строку, а если нет, то загрузите пустые строки, если что-то еще загрузите реальные строки.

вот мой код.

NSString* q1ynu = [defaults objectForKey:@"1aq1ynu"]; 
if ([q1ynu isEqualToString:@"No"]){ 
    NSString *q1text = @" "; 
    NSString *q1lmh = @" "; 
}else{ 
    NSString* q1lmh = [defaults objectForKey:@"1aq1lmh"]; 
    NSString* q1text = [defaults objectForKey:@"1aq1"]; 
} 

Я помещаю NSString *q1text = @" "; после внедрения и до viewDidLoad но она жалуется на неиспользованной переменной.

Это была загрузка всех 3 ответов, прежде чем независимо от проверки нет, но теперь, после загрузки ее загрузки, первый ответ No, или да и ничего больше?

Я что-то пропустил или это просто не должно работать? если нет, то что будет работать, потому что я в недоумении?

Спасибо всем

+0

Я строй относительной влажности строки в другой части как массив, так весь текст загружается там так игнорировать факт Я не объявляю значения никому .text еще .thanks – user2886912

ответ

2

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

NSString* q1ynu = [defaults objectForKey:@"1aq1ynu"]; 
NSString *q1text = @" "; 
NSString *q1lmh = @" "; 
if (![q1ynu isEqualToString:@"No"]){ 
    q1lmh = [defaults objectForKey:@"1aq1lmh"]; 
    q1text = [defaults objectForKey:@"1aq1"]; 
} 

// Now you can do something with q1lmh and q1text... 

Заметьте, что это все еще довольно неприятное глядя код :)

+0

Да, я знаю, что код не очень хорош в этом пункте, но его читаемость и легко следовать. просто из интереса, как бы вы к нему подошли? – user2886912

+0

Я бы использовал метод, который берет ключ и возвращает объект модели с двумя свойствами строки, я предполагаю, что '1aq1' является некоторой ссылкой на вопрос, а ключи, полученные из этого, являются ответами. Это говорит о том, что будет более одного вопроса, поэтому логика выше будет использоваться повторно довольно часто. – jrturton

+0

честно говоря, это случай, если его нет, а затем не загружать остальные ответы, чтобы перейти к распечатке PDF. для экономии места в окончательной форме. но он будет переписан, как только я буду рад, что эта концепция работает. – user2886912

0
BOOL q1ynu = [[defaults objectForKey:@"1aq1ynu"] isEqualToString:@"No"]; 
NSString *q1text = q1ynu ? @" " : [defaults objectForKey:@"1aq1"]; 
NSString *q1lmh = q1ynu ? @" " : [defaults objectForKey:@"1aq1lmh"]; 
Смежные вопросы