3

私は現在、に接続されUIStepperたカスタムで を使用して、ショッピング カートに追加するアイテムの数をユーザーに選択させています。UITableViewCellUITextField

オブジェクトの在庫があるかどうかを確認するために、LocalStock と TotalStock の 2 つの数値があります。

私は次のことをしたい:

オブジェクトの量がローカル在庫に収まる場合は、数値が表示されるテキスト フィールドを緑色にします。

オブジェクトの量がサプライヤ ストックに該当する場合 (ローカル ストックがないか、ステッパーの値がローカル ストックよりも高いため、サプライヤ ストックから取得する必要があります)、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);}}

そして、実行してもあまり意味がありません... GREENステートメントをキャッチすることもあれば、BLUEステートメントをキャッチすることもあり、同じ値がYELLOWを返すこともあります。

誰でもこれを見て、(論理) エラーがどこにあるのか教えてくれませんか?

前もって感謝します!

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 に答える