MongoDB에서 DateTime 속성이있는 레코드를 가져 오려고합니다. 이 속성은 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))
}
이 코드는 맥 OSX에서 잘 작동한다. 그러나 리눅스에서는 created["$date"] as? Int64
이 항상 nil
입니다.
저는 Int64 대신 Double
및 NSNumber
을 사용하는 것을 포함하여 두 가지 시도를했지만 여전히 nil
입니다.
이 번호에 액세스하는 방법에 대한 아이디어가 있으십니까? 나는 그것을 읽을 수있는 날짜로 변환해야하고, 내가하고있는 방식은 1970 년 이후 초 단위의 Double 값을 필요로하는 TimeInterval()
을 통해 이루어 지므로 1000 단계로 나눌 수 있고 그 단계에서 Double로 변환 할 수 있어야합니다.
편집 : 이것은 intDate
이 여전히 nil
인 NSNumber 코드이므로 let date
행을 통과하지 않습니다. something
은 전무
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))
}
편집이되지 않습니다 : 당신이 캐스팅 할 수 있도록,
var dictionary : [String:Any] = ["SomethingElse":"SomeOtherData","Something":["$date": 1507710414599]]
당신은 당신의 NSNumber로 시도 무엇을 보여줄 수 있습니까? 그게 효과가있다. –
@MartinR 내 편집에 해당 코드를 추가했습니다. – Tyress
Try as as? Int' ... –