Ios Obj-c-是否跳过了if语句?
我在一个包含各种if语句的按钮内有一段代码。所有的工作,除了我的最后一个 if(用户当前点<计算小时数){ 这个if语句似乎被跳过了,我不知道为什么(我试图尽可能减少这段代码)?例如,如果points大于currentuserPoints,应该会弹出一个警报。但是它绕过了这一点,只是保存了我的数据(因此,将我的用户送入负点数平衡)。任何帮助都将被感谢Ios Obj-c-是否跳过了if语句?,ios,objective-c,Ios,Objective C,我在一个包含各种if语句的按钮内有一段代码。所有的工作,除了我的最后一个 if(用户当前点
- (IBAction)sendMessage:(id)sender {
NSInteger hour = [components hour];
NSInteger minute = [components minute];
NSString *points;
if (hour <= 1) {
points = @"1";
} else if (hour > 1 && hour < 9) {
points = @"9";
} else if (hour <= 9) {
points = @"9";
} else if (hour > 9 && hour <= 24) {
points = @"24";
} else if (hour > 24 && hour <= 48) {
points = @"48";
} else if (hour > 48 && hour <= 72) {
points = @"72";
} else if (hour > 72 && hour <= 96) {
points = @"96";
} else if (hour > 96) {
points = @"96";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Uh Oh!"
message:@"Requests cannot exceed 5 days. Please create separate requests."
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
self.sendMessage.enabled = NO;
return;
}
NSDictionary *swapValues = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:points, nil] forKeys:[NSArray arrayWithObjects:@"value", nil]];
NSDictionary *totalPoints = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:swapValues] forKey:@"und"];
[nodeData setObject:totalPoints forKey:@"field_swapvalue"];
NSDictionary *enddateValues = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:formattedendDate, nil] forKeys:[NSArray arrayWithObjects:@"value", nil]];
NSDictionary *finalendDate = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:enddateValues] forKey:@"und"];
[nodeData setObject:finalendDate forKey:@"field_endswaptime"];
NSDictionary *swapInitiated = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"Requested", nil] forKeys:[NSArray arrayWithObjects:@"value", nil]];
NSDictionary *swapRequest = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:swapInitiated] forKey:@"und"];
[nodeData setObject:swapRequest forKey:@"field_swapaccepted"];
NSString *hoursCalculated = points;
NSString *usercurrentPoints = [[[DIOSSession sharedSession] user] objectForKey:@"field_points_balance"][@"und"][0][@"value"];
NSLog(@"USERS CURRENT BALANCE %@", usercurrentPoints);
[usercurrentPoints intValue];
[hoursCalculated intValue];
if (usercurrentPoints < hoursCalculated ) {
NSLog(@"CALCULATED %@", hoursCalculated);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Uh Oh!"
message:@"You don't have enough hours to complete this."
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
} else {
int result = [usercurrentPoints intValue] - [points intValue];
NSString *resultPoints = [NSString stringWithFormat:@"%d", result];
NSMutableDictionary *userData = [NSMutableDictionary new];
NSDictionary *targetPoints = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects: resultPoints, nil] forKeys:[NSArray arrayWithObjects:@"value", nil]];
NSDictionary *finalPoints = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:targetPoints] forKey:@"und"];
[userData setObject:finalPoints forKey:@"field_points_balance"];
-(iAction)sendMessage:(id)发送者{
NSInteger小时=[组件小时];
NSInteger分钟=[组件分钟];
NSString*点;
如果(小时1和小时<9){
分数=@“9”;
}其他条件(第9小时和第24小时和第48小时和第72小时和第96小时){
分数=@“96”;
UIAlertView*alert=[[UIAlertView alloc]initWithTitle:@“哦!”
消息:@“请求不能超过5天。请创建单独的请求。”
代表:赛尔夫
取消按钮:@“确定”
其他按钮:无];
[警报显示];
self.sendMessage.enabled=否;
返回;
}
NSDictionary*SwapValue=[NSDictionary Dictionary WithObjects:[NSArray arrayWithObjects:points,nil]forKeys:[NSArray arrayWithObjects:@“value”,nil]];
NSDictionary*totalPoints=[NSDictionary Dictionary WithObject:[NSArray arrayWithObject:SwapValue]forKey:@“und”];
[nodeData setObject:totalPoints forKey:@“字段值”];
NSDictionary*enddateValues=[NSDictionary Dictionary Dictionary WithObjects:[NSArray arrayWithObjects:formattedendDate,nil]forKeys:[NSArray arrayWithObjects:@“value”,nil]];
NSDictionary*Finalendate=[NSDictionary Dictionary WithObject:[NSArray arrayWithObject:enddateValues]forKey:@“und”];
[nodeData setObject:FINALENDATE forKey:@“字段\结束时间”];
NSDictionary*swapInitiated=[NSDictionary Dictionary Dictionary WithObjects:[NSArray arrayWithObjects:@“已请求”,无]forKeys:[NSArray arrayWithObjects:@“值”,无];
NSDictionary*swapRequest=[NSDictionary Dictionary WithObject:[NSArray arrayWithObject:swapInitiated]forKey:@“und”];
[nodeData setObject:swapRequest forKey:@“field_swapaccepted”];
NSString*计算小时数=点数;
NSString*usercurrentPoints=[[[DIOSSession sharedSession]user]objectForKey:@“field_points_balance”[@“und”][0][@“value”];
NSLog(@“用户当前余额%@”,usercurrentPoints);
[usercurrentPoints intValue];
[小时计算值];
if(用户当前点<计算小时数){
NSLog(@“计算%@”,计算小时数);
UIAlertView*alert=[[UIAlertView alloc]initWithTitle:@“哦!”
消息:@“您没有足够的时间完成此操作。”
代表:赛尔夫
取消按钮:@“确定”
其他按钮:无];
[警报显示];
}否则{
int结果=[usercurrentPoints intValue]-[points intValue];
NSString*resultPoints=[NSString stringWithFormat:@“%d”,结果];
NSMutableDictionary*userData=[NSMutableDictionary new];
NSDictionary*targetPoints=[NSDictionary Dictionary WithObjects:[NSArray arrayWithObjects:resultPoints,nil]forKeys:[NSArray arrayWithObjects:@“value”,nil]];
NSDictionary*finalPoints=[NSDictionary Dictionary WithObject:[NSArray arrayWithObject:targetPoints]forKey:@“und”];
[userData setObject:finalPoints-forKey:@“field_points_balance”];
您正在比较两个指针,而不是值,结果取决于指向的对象在地址空间中的相对位置
可能会帮助您更好地理解。您正在比较两个指针,而不是值,结果取决于指向的对象在地址空间中的相对位置
可能会帮助您更好地理解。问题: 将<或>与字符串一起使用会产生奇怪的效果。它肯定不会始终如一地满足您的需求 最小代码更改解决方案:
[usercurrentPoints intValue]
本身没有任何意义。因为您只需要修复比较,如果([usercurrentPoints intValue]<[hoursCalculated intValue])将其更改为
更好的解决方案:
为值使用正确的数据类型。点
和计算小时数
仅用作整数,因此没有理由将它们定义为字符串。我不熟悉DIOSSession,但我不明白为什么不能将intValue
指定给int变量。问题:
将<或>与字符串一起使用会产生奇怪的效果。它肯定不会始终如一地满足您的需求
最小代码更改解决方案:
[usercurrentPoints intValue]
本身没有任何意义。因为您只需要修复比较,如果([usercurrentPoints intValue]<[hoursCalculated intValue])
将其更改为
更好的解决方案:
为值使用正确的数据类型。点
和计算小时数
仅用作整数,因此没有理由将它们定义为字符串。我不熟悉DIOSSession,但我不明白为什么不能将intValue
指定给int变量。是否尝试添加断点并退出hr通过代码?@Shabirjan是的,并且if语句被跳过