0

タイムスタンプを比較するために、プロジェクトの NSString を int に変換しています。これは、変換時に NSLog から取得した応答です。

Server Time Stamp = 1363032033711 AND Server Time Stamp CONVERTED: 2147483647

このコードを使用して変換しています:

NSString *msg = [NSString stringWithFormat:@"%@", message];
NSArray *subString = [msg componentsSeparatedByString:@" "];
NSString *timeStamp = [subString lastObject];
int serverTimeStamp = [timeStamp intValue];
NSLog(@"Server Time Stamp = %@ AND Server Time Stamp CONVERTED: %d", timeStamp, serverTimeStamp);

変換された数値が奇妙である理由がわかりません。コードに問題があるのでしょうか、それとも文字列を int に変換することに問題があるのでしょうか?

4

1 に答える 1

4

1363032033711は大きすぎます。に変換することはできませんint(iOS では 32 ビット長のようです)。を Google で検索すると2147483647、それが 32 ビット符号付きの最大値であることがわかりますint。おそらく、- [NSString intValue]大きすぎて変換できない数値が見つかったかどうかを示す方法です。

解決策:より広い数値型を使用してNSScannerください:

NSScanner *scn = [NSScanner scannerWithString:[subString lastObject]];
long long serverTimeStamp;
[scn scanLongLong:&serverTimeStamp];
于 2013-03-11T20:11:03.163 に答える