J'essaie d'obtenir un enregistrement de MongoDB qui a une propriété DateTime. Cette propriété est ISODate mais est reçue en tant que type de données long (millisecondes depuis 1970) via l'API Perfect-MongoDB.Déballage de type de données long dans Swift Linux
Le code ressemble à ceci:
if var something = dictionary["Something"] as? [String:Any], var intDate = something["$date"] as? Int64
{
let date = Date(timeIntervalSince1970: TimeInterval(intDate/1000))
}
Ce code fonctionne très bien sous Mac OSX. Cependant, sous Linux, created["$date"] as? Int64
est toujours nil
.
J'ai essayé un certain nombre de choses, y compris en utilisant Double
et NSNumber
au lieu de Int64 mais il est toujours nil
.
Des idées pour accéder à ce numéro? J'ai besoin de le convertir en une date lisible, et la façon dont je le fais est à travers TimeInterval()
qui a besoin d'une valeur Double pour les secondes après 1970, donc il doit être divisible par 1000 et convertible en Double pendant cette étape.
Éditer: Ceci est le code NSNumber où intDate
est toujours nil
et ne tombe donc pas par la ligne let date
. something
est non nul
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))
}
Edit 2: Exemple Dictionnaire pour ce cas:
var dictionary : [String:Any] = ["SomethingElse":"SomeOtherData","Something":["$date": 1507710414599]]
Pouvez-vous montrer ce que vous avez essayé avec NSNumber? Cela devrait fonctionner. –
@MartinR a ajouté mon code pour celui-ci dans mon édition – Tyress
Essayez 'comme? Int' ... –