• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何防止记录负数或零数

[复制链接]
菜鸟教程小白 发表于 2022-12-12 22:58:37 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我的 xCode 应用程序有问题。

我的申请是关于记录结果的。因此项目值应该是正数。我尝试在选择项目时防止记录负值或零值,但我的代码不起作用。

这是我记录项目的代码

-(void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath
{

UIAlertView* alert = [[UIAlertView alloc] initWithTitle"Outcome Item Value" message"lease enter an outcome item value" delegate:self cancelButtonTitle"Cancel" otherButtonTitles"OK", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;

[alert show];

}

-(void)alertViewUIAlertView *)alertView clickedButtonAtIndexNSInteger)buttonIndex
{
  if (buttonIndex == 0) {

  }
  else
  {
    OutcomeItem* newOutcomeItem = [NSEntityDescription insertNewObjectForEntityForName"OutcomeItem" inManagedObjectContext:self.managedObjectContext];


    newOutcomeItem.outcomeName = self.selectedOutcomeItem.outcomeName;
    newOutcomeItem.outcomeValue = [NSNumber numberWithDouble:[[alertView textFieldAtIndex:0].text doubleValue]];


    if (newOutcomeItem.outcomeValue <= 0) {

        NSLog(@"Invalid Value");
        [self.navigationController popViewControllerAnimated:YES];
    }
    else
    {

        [self.delegate addOutcomeItem:newOutcomeItem];
        [self.navigationController popViewControllerAnimated:YES];
    }
  }
}

我的 OutcomeItem.h 是

#import<Foundation/Foundation.h>
#import<CoreData/CoreData.h>
@class OutcomeRecord;
@interface OutcomeItem : NSManagedObject
@property (nonatomic, retain) NSString *outcomeName;
@property (nonatomic, retain) NSNumber *outcomeValue;
@property (nonatomic, retain) OutcomeRecord *outcomeRecord;
@end;

OutcomeItem.m 是

#import "OutcomeItem.h"
#import "OutcomeRecord.h"

@implementation OutcomeItem
@dynamic outcomeName;
@dynamic outcomeValue;
@dynamic outcomeRecord;
@end

添加结果项的方法是

-(void)addOutcomeItemOutcomeItem *)outcomeItem

{ [self.currentOutcomeRecord addOutcomeItemsObjectutcomeItem]; self.outcomeRecordItemList = [self.currentOutcomeRecord.outcomeItems allObjects];

[self.tableView reloadData];
NSError* error;
if (![self.managedObjectContext save:&error]) {
    NSLog(@"Could not save outcome item insertion:\n%@", error.userInfo);
}

}



Best Answer-推荐答案


我发现了问题。您需要从 NSNumber 转换为 doubleValue。

 NSNumber *outcomeValueX = [NSNumber numberWithDouble:[[alertView textFieldAtIndex:0].text doubleValue]];

 if (outcomeValueX.doubleValue <= 0) {  
        NSLog(@"Invalid Value");
 } 

理想情况下,我会尝试使用 UITextFieldDelegate 对您的 UITextField 进行验证,并实现 textField:shouldChangeCharactersInRange:replacementString。

请看这里:How to Test Character Input to UITextField as the User Enters Characters and Prevent Invalid Characters

在验证值之前,我也不会添加新的结果项。

关于ios - 如何防止记录负数或零数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24243052/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap