-4

これは私のコードです:

NSString * atime = [NSString stringWithFormat:@"%@",[theDataObject.minuteArray objectAtIndex:indexPath.row]];

NSLog(@"value of atime is:%@",atime);

if (atime==@"0") {

    NSString * timeStr = [NSString stringWithFormat:@"%@s",[theDataObject.secondArray objectAtIndex:indexPath.row]];

    cell.timeLabel.text = timeStr;
}
else {
    NSString * timeStr = [NSString stringWithFormat:@"%@m%@s",[theDataObject.minuteArray objectAtIndex:indexPath.row],[theDataObject.secondArray objectAtIndex:indexPath.row]];

    cell.timeLabel.text = timeStr;
}

ただし、tim 値が 0 であっても、最初のステートメントを返すことはなく、2 番目のステートメントを返すだけです。

ログ値:

MyAudioRecorder[2484:10703] value of atime is:0 

@"0" の代わりに 0 を入れようとしましたが、まだ動作しません。

4

3 に答える 3

4

次のことを試してください。

if ([atime isEqualToString : @" "]) {}
于 2012-12-14T08:32:13.137 に答える
4
if (atime==@"0")

のメモリ アドレスatimeと定数 string のアドレスを比較します@"0"

if ([atime isEqualToString:@"0"]) 

2 つのメモリ位置に格納されているを比較します。

あなたの要件から、メモリの場所ではなく値を比較したいことがわかります。というわけで2枚目へ。

于 2012-12-14T08:41:49.277 に答える
1

isEqualToString: ->

- (BOOL)isEqualToString:(NSString *)aString

リテラルUnicode ベースの比較を使用して、指定された文字列がレシーバーと等しいかどうかを示すブール値を返します。

考察-> このメソッドが 2 つの文字列を比較するとき、個々の Unicode が同じであれば、文字列は等しい

詳細については、 Apple NSString クラス リファレンスにアクセスできます。

if([atime isEqualToString:@"0"])
{
}
else
{
}
于 2012-12-14T08:33:29.060 に答える