gpt4 book ai didi

nsdata - 如何将 Int 附加到新的数据结构 (Swift 3)

转载 作者:行者123 更新时间:2023-12-04 22:10:35 25 4
gpt4 key购买 nike

NSMutableData我可以创建一个数组 Int'sFloat并将它们存储到磁盘。

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在引擎盖下。赞 StringNSString .我不知道如何添加例如 Double使用新方法。

append 函数现在需要一个 UnsafePointer<UInt8> ,但是你如何从 Double 创建这个或任何随机结构?

最佳答案

使用指针是我在 Swift 中最不喜欢做的事情之一,但它也提供了很好的学习经验。这对我有用:

struct Storage<T: BinaryConvertible>
{
var data = Data()

mutating func append(value: T)
{
var input = value
let buffer = UnsafeBufferPointer(start: &input, count: 1)
self.data.append(buffer)
}

func extract(index: Int) -> T
{
let startIndex = index * sizeof(T)
let endIndex = startIndex + sizeof(T)

var output = T()
let buffer = UnsafeMutableBufferPointer(start: &output, count: 1)
let _ = self.data.copyBytes(to: buffer, from: startIndex..<endIndex)

return output
}
}

var s = Storage<Double>()
s.append(value: M_PI)
s.append(value: 42)
s.append(value: 100)

print(s.extract(index: 0))
print(s.extract(index: 1))
print(s.extract(index: 2))

关于nsdata - 如何将 Int 附加到新的数据结构 (Swift 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37922333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com