1

私はこの疑いがばかげた間違いかもしれないことを知っています. JSON 文字列から変数を取得しています。ステータスは 1 または 0 になります。最初のメソッド (コード 1) を使用すると機能します。しかし、2 番目の方法 (コード 2) を実行すると、常に NO になります。何が間違っているのかわかりません。質問があまりにもばかげている場合は、ご容赦ください。

コード 1:

NSDictionary *drivingAlertResponse = [jsonResponseString objectFromJSONString];
BOOL isEnabled;
        if ([[drivingAlertResponse valueForKey:@"alertStatus"] intValue] > 0) {
            isEnabled = TRUE;
        }else{
            isEnabled = FALSE;
        }

コード 2:

BOOL isEnabled = [[[NSString stringWithFormat:@"%i",[drivingAlertResponse valueForKey:@"alertStatus"]] isEqualToString:@"1"]? @"TRUE": @"FALSE"   boolValue];
4

5 に答える 5

9

NSString のboolValue メソッドを使用するだけです。次のように使用できます。

NSDictionary *drivingAlertResponse = [jsonResponseString objectFromJSONString];
BOOL isEnabled = [[drivingAlertResponse valueForKey:@"alertStatus"] boolValue];
于 2012-06-18T16:13:55.687 に答える
2
BOOL value = YES = TRUE = 1 and value = NO = FALSE = 0 

これを行う:

BOOL isEnabled = [[NSString stringWithFormat:@"%@",[drivingAlertResponse valueForKey:@"alertStatus"]] intValue];
于 2012-06-18T16:13:34.440 に答える
2

%i有効な書式指定子ではありません。整数をフォーマットするには、 を使用する必要があります%d。ただし、それを行っている時点で、[drivingAlertResponse valueForKey:@"alertStatus"]まだオブジェクト (おそらく NSString または NSNumber) であるときに整数にフォーマットしようとしています。オブジェクトの指定子は%@. ただし、[[drivingAlertResponse valueForKey:@"alertStatus"] boolValue]NSNumber と NSString の両方に boolValue メソッドがあるため、単純に実行して完了できます。

于 2012-06-18T16:10:22.990 に答える
1

なぜ %i を使用しているのですか? 値が 0 または 1 の場合は、%d を使用する必要があります。

あなたが試すことができます:

BOOL isEnabled = [drivingAlertResponse valueForKey:@"alertStatus"] != 0
于 2012-06-18T16:12:43.627 に答える
0

私はただ使うだろう

int returnBoolInt = [[drivingAlertResponse valueForKey:@"alertStatus"] intValue];

BOOL isEnabled = [[NSNumber numberWithInt:returnBoolStr] boolValue];
于 2012-06-18T16:17:07.790 に答える