将 NSTimeInterval 转换为 NSData 并返回 NSTimeInterval
Convert NSTimeInterval to NSData and back to NSTimeInterval
如何将 NSTimeInterval
值转换为 NSData
?
NSTimeInterval
只是 Double
的类型别名。您可以像使用任何其他 Foundation 类型一样通过复制字节来存档它。
var time = NSTimeInterval(100) // 100.0
let timeData = NSData(bytes: &time, length: sizeof(NSTimeInterval))
var unarchivedTime = NSTimeInterval() // You need to initialize an empty NSTimeInterval object as a var in order to mutate it
timeData.getBytes(&unarchivedTime, length: sizeof(NSTimeInterval))
print(unarchivedTime) // 100.0
您也可以使用 NSKeyedArchiver
:
let time = NSTimeInterval(100)
let archivedTime = NSKeyedArchiver.archivedDataWithRootObject(time)
let unarchivedTime = NSKeyedUnarchiver.unarchiveObjectWithData(archivedTime) as! NSTimeInterval
Xcode 8.3.1 • Swift 3.1
var nowInterval = Date().timeIntervalSince1970 // 1491800604.362141
let data = Data(bytes: &nowInterval, count: MemoryLayout<TimeInterval>.size) // 8 bytes
let timeInterval: Double = data.withUnsafeBytes{ [=10=].pointee }
let date = Date(timeIntervalSince1970: timeInterval) // Apr 10, 2017, 2:03 AM"
如何将 NSTimeInterval
值转换为 NSData
?
NSTimeInterval
只是 Double
的类型别名。您可以像使用任何其他 Foundation 类型一样通过复制字节来存档它。
var time = NSTimeInterval(100) // 100.0
let timeData = NSData(bytes: &time, length: sizeof(NSTimeInterval))
var unarchivedTime = NSTimeInterval() // You need to initialize an empty NSTimeInterval object as a var in order to mutate it
timeData.getBytes(&unarchivedTime, length: sizeof(NSTimeInterval))
print(unarchivedTime) // 100.0
您也可以使用 NSKeyedArchiver
:
let time = NSTimeInterval(100)
let archivedTime = NSKeyedArchiver.archivedDataWithRootObject(time)
let unarchivedTime = NSKeyedUnarchiver.unarchiveObjectWithData(archivedTime) as! NSTimeInterval
Xcode 8.3.1 • Swift 3.1
var nowInterval = Date().timeIntervalSince1970 // 1491800604.362141
let data = Data(bytes: &nowInterval, count: MemoryLayout<TimeInterval>.size) // 8 bytes
let timeInterval: Double = data.withUnsafeBytes{ [=10=].pointee }
let date = Date(timeIntervalSince1970: timeInterval) // Apr 10, 2017, 2:03 AM"