gpt4 book ai didi

macos - 在 Swift 中将字符串写入 NSOutputStream

转载 作者:IT王子 更新时间:2023-10-29 05:24:40 25 4
gpt4 key购买 nike

我正在尝试在 Swift 中将 String 写入 NSOutputStream。使用 Objective C 以这种方式编写字符串通常通过将其作为 NSData 传递来工作

NSData *data = [[NSData alloc] initWithData:[mystring dataUsingEncoding:NSASCIIStringEncoding]];
[outputStream write:[data bytes] maxLength:[data length]];

这不适用于 swift

var data: NSData = mystring.dataUsingEncoding(NSUTF8StringEncoding)!
outputStream.write(data, maxLength: data.length)

这会产生错误

'NSData' is not convertible to 'UnsafePointer'

用于将数据写入流的行。

如何在 Swift 中将字符串写入 NSOutputStream?

最佳答案

在最近的 Swift 中它应该更容易并且不再需要 NSData。

let s = "String to encode"
let encodedDataArray = [UInt8](s.utf8)
outputstream.write(encodedDataArray, maxLength: encodedDataArray.count)

数组可以作为正确类型的缓冲区访问(参见 withUnsafeBufferPointer)。我认为该数组是必需的,因为 utf8 View 实际上并未实例化为完整数组,而只是原始字符串的 View 。

在生产代码中,您应该检查写入输出流的返回值,并根据您的场景检查写入前是否有空间,但此答案的重点是 Swift String 的编码,以便可以写入.

关于macos - 在 Swift 中将字符串写入 NSOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26331636/

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