【发布时间】:2016-06-20 12:13:27
【问题描述】:
使用NSMutableData,我可以创建Int's 或Float 的数组并将它们存储到磁盘。
protocol BinaryConvertible
{
init()
}
extension Int : BinaryConvertible {}
struct Storage<T: BinaryConvertible>
{
let data = NSMutableData()
func append(value: T)
{
var input = value
data.append(&input, length: sizeof(T))
}
func extract(index: Int) -> T
{
var output = T()
let range = NSRange(location: index * sizeof(T), length: sizeof(T))
data.getBytes(&output, range: range)
return output
}
}
Swift 3 有一个新的Data 类型,它在底层使用NSData。喜欢String 和NSString。我不知道如何添加例如使用新方法的Double。
append 函数现在需要一个 UnsafePointer<UInt8>,但是如何从 Double 或任何随机结构创建它?
【问题讨论】:
-
我不这么认为。在 swift 3 Data 中需要 UnsafePointer
。注意 UInt8 类型。到目前为止,我发现的所有内容都与 UnsafePointer 指针有关。我需要获取字节,以便将它们写入磁盘,然后再读取这些字节。 -
我没看到。如何将 double 转换为可以附加到 Data 的一系列字节 Uint8(不是 NSData 或 NSMutableData,而是新的 Swift 3 Data 结构)?然后做相反的事情:读取字节并将它们转换回 Double。