gpt4 book ai didi

iphone - Objective-C:简单 if x == y || 的问题y || y 命令

转载 作者:行者123 更新时间:2023-12-03 20:21:08 25 4
gpt4 key购买 nike

我有一个字符串(包含月份),想检查它是“短”月份(就名称长度而言)还是“月份”名称。我想根据名字的长度来设置它的位置:

    NSString* dateMonth = @"SEPTEMPER";
if (dateMonth == @"MARCH" || @"APRIL" || @"MAY" || @"JUNE" || @"JULY") {

CGRect calendarFrame = CGRectMake(170+100, 8, 200, 50);
calendar1 = [[UIView alloc] initWithFrame:calendarFrame];
calendar1.clipsToBounds = true;

} else {

CGRect calendarFrame = CGRectMake(170, 8, 200, 50);
calendar1 = [[UIView alloc] initWithFrame:calendarFrame];
calendar1.clipsToBounds = true;

}

这种情况应该以 ELSE 函数结束,但事实并非如此……我最终得到了 170+100 的位置。

我做错了什么?任何帮助将非常感激。

最佳答案

这段代码

if (dateMonth == @"MARCH" || @"APRIL") {

实际评估为

if ((dateMonth == @"MARCH") || (@"APRIL")) {

由于 @"APRIL" 不是零或 nil,因此它的计算结果为 TRUE

可以做什么

  • 第 1 步(部分修复)

    if ((dateMonth == @"MARCH") || (dateMonth == @"APRIL")) {
  • 第 2 步(这已经有效)
    使用 isEqual 方法来比较字符串(或任何其他对象),而不是 ==isEqualToString 也是有效的,正如其他人建议的那样。

  • 第 3 步(额外一英里)
    您可以通过使用 set 使其更具可读性(并且更简单)。

    NSSet *shortMonths = [NSSet setWithObjects:@"MARCH", @"APRIL", @"MAY", nil];
    if ([shortMonths containsObject:@"APRIL"]) {

关于iphone - Objective-C:简单 if x == y || 的问题y || y 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5776092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com