Ios Obj-c-是否跳过了if语句?

Ios Obj-c-是否跳过了if语句?,ios,objective-c,Ios,Objective C,我在一个包含各种if语句的按钮内有一段代码。所有的工作,除了我的最后一个 if(用户当前点

我在一个包含各种if语句的按钮内有一段代码。所有的工作,除了我的最后一个

if(用户当前点<计算小时数){

这个if语句似乎被跳过了,我不知道为什么(我试图尽可能减少这段代码)?例如,如果points大于currentuserPoints,应该会弹出一个警报。但是它绕过了这一点,只是保存了我的数据(因此,将我的用户送入负点数平衡)。任何帮助都将被感谢

- (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语句被跳过