Swift 将NSTimeInterval转换为NSData并返回到NSTimeInterval
如何将Swift 将NSTimeInterval转换为NSData并返回到NSTimeInterval,swift,nsdata,nstimeinterval,Swift,Nsdata,Nstimeinterval,如何将NSTimeInterval值转换为NSData?NSTimeInterval只是Double的类型别名。您可以通过复制与其他任何基础类型一样的字节来存档。 var time = NSTimeInterval(100) // 100.0 let timeData = NSData(bytes: &time, length: sizeof(NSTimeInterval)) var unarchivedTime = NSTimeInterval() // You need to i
NSTimeInterval
值转换为NSData
?NSTimeInterval
只是Double
的类型别名。您可以通过复制与其他任何基础类型一样的字节来存档。
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
您也可以使用:
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{ $0.pointee }
let date = Date(timeIntervalSince1970: timeInterval) // Apr 10, 2017, 2:03 AM"
var nowInterval=Date().timeIntervalSince1970//1491800604.362141
let data=data(字节:&nowInterval,计数:MemoryLayout.size)//8字节
let timeInterval:Double=data.withUnsafeBytes{$0.pointee}
让日期=日期(时间间隔自1970年起:时间间隔)//2017年4月10日凌晨2:03”
为什么需要这样做?在我向对等方发送邀请时向他发送邀请,看看是谁先发送的(多对等连接),我有一个问题,当两个对等方在各自收到对方发送的邀请之前向对方发送邀请时,双方都认为自己是发送方而不是接收方。因此,您希望两台设备的时间设置正确,以便进行比较?发送一个可以轻松存档的NSDate?如何将NSDate转换为NSData?发布了答案使用Xcode 7和Swift 2.0进行测试。如果您使用的是不同版本的Swift,但这不起作用,请告诉我。这不是最佳解决方案,因为unarchiveObjectWithData
可能引发异常。但因为此方法不会“抛出“它是个例外,没有办法用Swift捕捉到它,这会导致你的应用程序崩溃。这不适用于XCode 7.2等。。。不会接受“&”,然后在删除后,抛出一个关于向未安全指针施放的错误。@DanShev在Xcode 7.2中的Swift iOS操场上为我工作得很好。你能在调用代码的地方发布完整的上下文吗?
var nowInterval = Date().timeIntervalSince1970 // 1491800604.362141
let data = Data(bytes: &nowInterval, count: MemoryLayout<TimeInterval>.size) // 8 bytes
let timeInterval: Double = data.withUnsafeBytes{ $0.pointee }
let date = Date(timeIntervalSince1970: timeInterval) // Apr 10, 2017, 2:03 AM"