我对下面的代码有疑问。它的问题是什么?我尝试将NSUInteger
定义为int
,但它仍然没有用。
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:NSHourCalendarUnit fromDate:nowNow];
NSLog(@"%ld",[components hour]);
NSUInteger *timeHour = [components hour];
if ( timeHour < 5 && timeHour > 9){}
这段代码应该在早上5点到9点之间检测到。
答案 0 :(得分:2)
timeHour < 5
自动返回true的任何内容都将为timeHour > 9
返回false。你和这两个条件在同一时间都不是真的,所以你总是会返回错误。
此外,如果if
块中没有任何内容,则无法判断它是否正在执行。
你可能正在寻找更像这样的东西:
if (timeHour >= 5 && timeHour <= 9) {
// stuff
}
对于timeHour >= 5
大于或等于5的任何内容, timeHour
都会返回true。
timeHour <= 9
小于或等于9的任何内容, timeHour
都会返回true。
a && b
和a
都为真时, b
才会返回true。
编辑:还有...... NSUInteger *timeHour = [components hour];
我刚抓到的这条线路存在问题。您将timeHour
定义为NSUInteger
指针,而不是NSUInteger
。摆脱*
并重试。
答案 1 :(得分:0)
我通过将'if'行替换为:
来修复此问题if ( [components hour] <= 5 && [components hour] >= 9){
并删除NSUInteger
行。