gpt4 book ai didi

ios - swift 。如何将 NSData 中的字节写入另一个 NSData?

转载 作者:搜寻专家 更新时间:2023-11-01 06:46:12 29 4
gpt4 key购买 nike

我正在尝试将两个 NSData 对象连接成一个 NSMutableData,然后将它们取回。现在我正在尝试以这种方式进行:

  1. 获取第一个对象的长度。
  2. 按以下顺序写入 NSMutableData:第一个对象长度、第一个对象、第二个对象。

代码如下:

let firstString = "first_string";
let secondString = "secondSting";

let firstData = firstString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
let secondData = secondString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!


let mutableData = NSMutableData()

var length = firstData.length

mutableData.appendBytes(&length, length: sizeof(Int))

mutableData.appendData(firstData)

mutableData.appendData(secondData)

然后我想取回数据。所以我想读取第一个数据长度然后得到两个数据。

    var length = 0
mutableData.getBytes(&length, length: sizeof(Int))

但是当我尝试获取数据时却崩溃了:

    var data = NSData()

mutableData.getBytes(&data, range: NSMakeRange(sizeof(Int), length))

也许有人知道我的问题在哪里或如何获取数据?

最佳答案

您可以使用 subdataWithRange() 提取数据:

let firstData1 = mutableData.subdataWithRange(NSMakeRange(sizeof(Int), length))
if let firstString1 = NSString(data: firstData1, encoding: NSUTF8StringEncoding) as? String {
println(firstString1)
} else {
// bad encoding
}

你的解决方案

var data = NSData()
mutableData.getBytes(&data, range: NSMakeRange(sizeof(Int), length))

不工作并崩溃,因为 NSData 是一个引用类型并且data 指向对象的指针。你正在覆盖这个指针以及内存中的以下字节。

关于ios - swift 。如何将 NSData 中的字节写入另一个 NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30559442/

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