2016-04-18 1 views
1

私のユニットテストの1つでは、時には大きな(> 32ビット)整数値を含む[String:AnyObject]を宣言する必要があります。リテラルは次のエラーをトリガとして整数を書く整数をオーバーフローさせた[String:AnyObject]を宣言する

[ 
    ["timestamp": 1460793600000,"expectedState": "close"], 
    ["timestamp": 1460822400000,"expectedState": "open"] 
] 

整数リテラルオーバーフロー 'のInt' エラー

に保存されたとき、私は私がNSNumbers

でそれを書くことができます知っています
[ 
    ["timestamp": NSNumber(longLong:1460793600000),"expectedState": "close"], 
    ["timestamp": NSNumber(longLong:1460822400000),"expectedState": "open"] 
] 

これはデータと一致しません私は期待しています(JSONの配列が変形可能なコアデータプロパティに格納されています)。

私のテストの目的は、私が32ビットデバイス上で64ビットの値を正しく処理していることを保証することです。

答えて

0

実際、私はこれについて少しばかげていると感じます。

NSManagedObjectの配列から返される数値は、__NSCFNumberなので、NSNumberです。

まだ、32ビットデバイスでユニットテストを実行しなくても、64ビット値を処理するためのテストを書く方法はまだ分かっています。

+0

32ビットマシンと64ビットマシンで異なる長さの型( 'Int' /' NSInteger'など)を避けると、安全です。プリミティブでは、固定長の型を使用します( 'Int64'など)。 – vadian

関連する問題