通过添加断点和找到的指针调试程序没有得到嵌套的if语句
如果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];
}
}
}
编辑:
- (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];
}
答案 0 :(得分:1)
如果BookmarkState
属于boolean
属性,则表示您缺少self
。 (应为self.BookmarkState == NO
。)
<强>更新强>
在更新的示例代码中,您要将BOOL
与INT
进行比较。 (if (_BookmarkState != _bookmarkbtn.tag)
)需要解决。
您还需要更新if条件才能使用_BookmarkState
或self.BookmarkState
。
第二次更新:
您目前正在检查_BookmarkState != _bookmarkbtn.tag
是否正在将BOOL
(是/否)与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;
这是第一个问题。
答案 1 :(得分: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])
之后错过了左大括号。我希望这是你的问题。