我試圖從具有DateTime屬性的MongoDB獲取記錄。該屬性是ISODate,但通過Perfect-MongoDB API作爲長數據類型(1970年以來的毫秒)接收。在Swift Linux中展開長數據類型
的代碼看起來是這樣的:
if var something = dictionary["Something"] as? [String:Any], var intDate = something["$date"] as? Int64
{
let date = Date(timeIntervalSince1970: TimeInterval(intDate/1000))
}
此代碼是在Mac OSX上工作的罰款。但是在Linux中,created["$date"] as? Int64
總是nil
。
我試過幾件事,包括使用Double
和NSNumber
而不是Int64,但它仍然是nil
。
有關我如何訪問此號碼的任何想法?我需要將它轉換爲可讀的日期,而我這樣做的方式是通過TimeInterval()
,在1970年之後需要秒的Double值,所以它需要被1000整除,並在該步驟中轉換爲Double。
編輯:這是NSNumber代碼,其中intDate
仍然是nil
,因此不通過let date
行。 something
不是nil
if var something = dictionary["Something"] as? [String:Any], var intDate = something["$date"] as? NSNumber
{
let date = Date(timeIntervalSince1970: TimeInterval(NSDecimalNumber(decimal:intDate.decimalValue/1000).doubleValue))
}
編輯2:樣品字典這種情況:
var dictionary : [String:Any] = ["SomethingElse":"SomeOtherData","Something":["$date": 1507710414599]]
您能不能告訴你試着用的NSNumber?這應該工作。 –
@MartinR在我的編輯中添加了我的代碼 – Tyress
試試'as? Int' ... –