2016-04-26 8 views
0

私はDictionaryオブジェクトが多数あります(エポックタイム)。 Intとしてキャストしようとすると、結果はまったく異なる数値になります。 Int64またはStringとして明示的にキャストしようとすると、両方ともnilとなります。大きなIntをアンラップできません

(lldb) po postData["createdDate"] 
▿ Optional<AnyObject> 
    ▿ Some : 1 elements 
    - [0] : 1461681488000 

(lldb) po postData["createdDate"] as? [Int] 
▿ Optional<Array<Int>> 
    ▿ Some : 1 elements 
    - [0] : 1392607360 

(lldb) po postData["createdDate"] as? [Int64] 
nil 

(lldb) po postData["createdDate"] as? [String] 
nil 

私は64ビットシステムであり、Int64の天井のかなり下です。ここで何が起こっているのですか。この番号にはどうすればアクセスできますか?

PS:日付はISO 8601形式で送信する必要があることを認識していますが、これは私が扱っている入力です。

答えて

2

数字の辞書オブジェクトはNSNumberにブリッジされています。

NSNumberに値をキャストし、longLongValue

if let epochTime = postData["createdDate"] as? NSNumber { 
    let longNumber : Int64 = epochTime.longLongValue 
} 
を取得します
関連する問題