【问题标题】:comparing strings with isEqual isn't running the full function iOS用 isEqual 比较字符串没有运行完整的功能 iOS
【发布时间】:2015-12-01 12:28:00
【问题描述】:

我有一个烦人的问题,我正试图解决它,但它只是没有发生,所以要么我错过了一些愚蠢的东西,要么我做错了。

基本上 id 喜欢检查一个字符串,如果它是 no,则加载空白字符串,如果它还有其他内容,则加载真正的字符串。

这是我的代码。

 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 个答案,无论是否检查,但现在在加载第一个答案之后加载否,或者是,没有别的?

我是否遗漏了什么,或者这只是不应该工作?如果没有,那么什么会起作用,因为我不知所措?

谢谢大家

【问题讨论】:

  • 我在不同的部分构建 rh 字符串作为数组,所以所有文本都加载到那里,所以忽略我还没有将值声明给任何 .text 的事实。谢谢

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


【解决方案1】:

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

请注意,这仍然是看起来很讨厌的代码:)

【讨论】:

  • 是的,我知道代码在这一点上并不漂亮,但它的可读性和易于理解。只是出于兴趣,您将如何处理?
  • 我会使用一个方法,它接受一个键并返回一个具有两个字符串属性的模型对象,我假设1aq1 是对一个问题的引用,而从中派生的键是答案。这表明会有不止一个问题,所以上面的逻辑会经常被重用。
  • 老实说,如果它不是唯一的情况,那么不要将其余答案加载到 pdf 打印输出中。以节省最终表格的空间。但一旦我对这个概念感到满意,它就会被重写。
  • 它没有用,只是崩溃了一天的应用程序。我决定暂时离开它,并在 pdf 创建完成后重新访问。非常感谢您的回答:)
【解决方案2】:
BOOL q1ynu = [[defaults objectForKey:@"1aq1ynu"] isEqualToString:@"No"];
NSString *q1text = q1ynu ? @" " : [defaults objectForKey:@"1aq1"];
NSString *q1lmh = q1ynu ? @" " : [defaults objectForKey:@"1aq1lmh"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2016-05-14
    相关资源
    最近更新 更多