3

我目前在连接到 aUIStepper的自定义中使用 a来让人们选择他们想要添加到购物车的商品数量。UITableViewCellUITextField

要检查对象是否有库存,我有两个数字:LocalStock 和 TotalStock。

我想做以下事情:

如果对象的数量落入本地库存,我希望显示数字的文本字段变为绿色。

如果对象的数量落入供应商库存(所以要么没有本地库存,或者步进值高于本地库存,所以我们需要从供应商库存中获取)变成UITextField蓝色。

如果供应商库存和本地库存都不够,我希望文本字段变为黄色。

我得到以下代码:

- (IBAction)stepperValueChanged:(id)sender

NSLog(@"localstock: %@",localstock);
NSLog(@"TotalStock: %@",totalstock);

NSDecimalNumber *value = [NSDecimalNumber decimalNumberWithString: self.textField.text];

if (value <= localstock) 
{
self.aantalTextField.backgroundColor = [UIColor greenColor]; 

NSLog(@"Value %@ <= Localstock %@ >GREEN< Totalstock: %@",value,localstock, totalstock);
}

else if (value <= totalstock) 
{
self.aantalTextField.backgroundColor = [UIColor blueColor]; 

NSLog(@"Value %@ <= totalstock %@ >BLUE< Localstock: %@",value,totalstock,localstock);
}

else
{
self.aantalTextField.backgroundColor = [UIColor yellowColor]; 
NSLog(@"Value: %@ LocalStock: %@ TotalStock %@ >YELLOW<",value,localstock,totalstock);}}

当我运行它时它没有多大意义......有时它会捕捉到绿色语句,有时会捕捉到蓝色,有时相同的值会返回黄色。

有人愿意看一下这个并告诉我(逻辑)错误在哪里吗?

提前致谢!

4

2 回答 2

1

您正在比较对象,而不是它们的值。只要它们都是 NSDecimalNumber 类型...您需要与此类似的比较。

[value integerValue ] <= [localstock integerValue]
于 2013-01-08T12:50:33.283 回答
1

据我从您的代码中了解到,localstock、totalstock 和 value 是对象,而不是整数,并且您正在比较对象指针,而不是值。相反,您应该使用

- (NSComparisonResult)compare:(NSNumber *)decimalNumber

NSDecimalNumber课堂上声明。

或使用例如将所有转换为整数

[value intValue]
于 2013-01-08T12:56:35.113 回答