比较字符串与isEqual没有运行完整的功能iOS

时间:2015-12-01 12:28:00

标签: ios objective-c string if-statement nsstring

我有一个令人烦恼的问题,我正试图绕过但它只是没有发生,所以要么我错过了一些愚蠢的事情,要么我做错了。

基本上就像检查一个字符串,如果它是一个否,然后加载空字符串,如果它的其他任何东西然后加载真正的字符串。

这是我的代码。

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

我在实施之后和 viewDidLoad 之前放置NSString *q1text = @" ";但它确实抱怨未使用的变量。

无论是否检查,它都加载了所有3个答案,但现在在播放加载后第一个答案为No,或是,没有别的?

我错过了什么或这是不是应该工作?如果不是那么什么会起作用,因为我不知所措?

全部谢谢

2 个答案:

答案 0 :(得分:2)

你在if语句中声明变量,它们不会存在于它之外。你需要更像这样的东西:

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...

请注意,这仍然是令人讨厌的代码:)

答案 1 :(得分:0)

BOOL q1ynu = [[defaults objectForKey:@"1aq1ynu"] isEqualToString:@"No"];
NSString *q1text = q1ynu ? @" " : [defaults objectForKey:@"1aq1"];
NSString *q1lmh = q1ynu ? @" " : [defaults objectForKey:@"1aq1lmh"];