【问题标题】:Pointer not stoping at nested if statement指针不在嵌套 if 语句处停止
【发布时间】:2013-08-05 20:59:02
【问题描述】:

通过添加断点调试程序,发现指针未到达嵌套 if 语句

怕嵌套的if if else语句逻辑是正确的。

- (void)bookmarkcurrentIndex {

    currentIndex = [modelArray indexOfObject:contentViewController.page];

    if ([contentViewController.bookmarks containsIndex:currentIndex]) // Remove bookmark

        if (BookmarkState == NO) {

            [contentViewController.bookmarks removeIndex:currentIndex];

        }
        else {   

            [contentViewController.bookmarks addIndex:currentIndex];

        }
    }
}

编辑:

- (IBAction)bookmarkAction:(id)sender {



if (_BookmarkState != _bookmarkbtn.tag)
{
    [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-N.png"] forState:UIControlStateNormal];
    _bookmarkbtn.tag = 0;
     [self setBookmarkState:NO];

}
else
{
    [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-Y.png"] forState:UIControlStateNormal];     
    _bookmarkbtn.tag = 1;
    [self setBookmarkState:YES];

}

_bookmarkbtn.tag = _BookmarkState;

[self bookmarkcurrentIndex];

}

【问题讨论】:

  • 你检查每个if语句中的参数值了吗?
  • 在第一个 if 语句处停止并显示正确的 currentIndex 值,但在第二个 if 语句处不停止

标签: iphone objective-c ios6


【解决方案1】:

当我匹配您的左大括号和右大括号时,它们不匹配。您的外部 if 语句似乎无处可去。仔细看看我是否正确。您是否将代码直接复制并粘贴到此处的表单中?如果是这样,那么您的代码有问题。它应该是这样的:

- (void)bookmarkcurrentIndex {

    currentIndex = [modelArray indexOfObject:contentViewController.page];

    if ([contentViewController.bookmarks containsIndex:currentIndex]) { // Remove bookmark

        if (BookmarkState == NO) {
            [contentViewController.bookmarks removeIndex:currentIndex];
        } 
        else {   
          [contentViewController.bookmarks addIndex:currentIndex];
        }
    }
}

您会看到我重新格式化并更正了它。 if ([contentViewController.bookmarks containsIndex:currentIndex]) 之后缺少左大括号。我希望这是你的问题。

【讨论】:

  • 你是对的。我怎么能错过那个。修复了那部分,但仍然没有停止第二个 if 语句
【解决方案2】:

如果BookmarkStateboolean 属性,则缺少self。 (应该是self.BookmarkState == NO。)

更新:

在更新后的示例代码中,您将BOOLINT 进行比较。 (if (_BookmarkState != _bookmarkbtn.tag)) 需要解决。

您还需要更新 if 条件以使用 _BookmarkStateself.BookmarkState

第二次更新:

您当前正在检查 _BookmarkState != _bookmarkbtn.tag 是否是 BOOL (YES/NO) 和 INT (0/1)。你不应该这样做。相反,使用 BOOL 来确定状态:

if (self.BookmarkState) { // If it's YES.
  [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-N.png"]
                forState:UIControlStateNormal];
} else { // It's NO.
  [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-Y.png"] 
                forState:UIControlStateNormal];
}
self.BookmartState = !self.BookmarkState;

这是第一个问题。

【讨论】:

  • 已编辑——你缺少自我。
  • 在添加 self 后给出解析问题
  • 您能否用更多代码更新您的问题?如果 self.BookmarkState 给出解析错误,则可能存在更大的问题。
  • BookmarkState 是布尔值还是整数?您现在正在将其与标签进行比较。
  • 是的,它是布尔值。现在解析错误已解决,但仍然没有停止第二个 if 语句
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多