NSString initWithBytes使用swift

NSString initWithBytes使用swift,swift,nsstring,Swift,Nsstring,正在尝试转换(工作)objC代码: const uint8_t * buffer = ... NSString * password = [[NSString alloc] initWithBytes:buffer+28 length:buffer[27] encoding:NSUTF8StringEncoding]; 尝试: let buffer: [Byte] = ... var password = NSString(bytes: buffer+28, length: Int(buffe

正在尝试转换(工作)objC代码:

const uint8_t * buffer = ...
NSString * password = [[NSString alloc] initWithBytes:buffer+28 length:buffer[27] encoding:NSUTF8StringEncoding];
尝试:

let buffer: [Byte] = ...
var password = NSString(bytes: buffer+28, length: Int(buffer[27]), encoding: NSUTF8StringEncoding)
但这会立即使SourceKit服务崩溃,如果我尝试编译,编译器也会崩溃


我怀疑这可能与转换指针有关?

如果您需要将字节数组转换为NSString,那么只需使用

NSString(bytes: buffer, length: buffer.length, encoding: NSUTF8StringEncoding)
如果需要执行指针前进等操作,请将其转换为非安全指针,如下所示:

NSString(bytes: UnsafePointer<Byte>(buffer) + 28, length: Int(buffer[27]), encoding: NSUTF8StringEncoding)
NSString(字节:UnsafePointer(buffer)+28,长度:Int(buffer[27]),编码:NSUTF8StringEncoding)

如果您需要将字节数组转换为NSString,那么只需使用

NSString(bytes: buffer, length: buffer.length, encoding: NSUTF8StringEncoding)
如果需要执行指针前进等操作,请将其转换为非安全指针,如下所示:

NSString(bytes: UnsafePointer<Byte>(buffer) + 28, length: Int(buffer[27]), encoding: NSUTF8StringEncoding)
NSString(字节:UnsafePointer(buffer)+28,长度:Int(buffer[27]),编码:NSUTF8StringEncoding)

如果您需要将字节数组转换为NSString,那么只需使用

NSString(bytes: buffer, length: buffer.length, encoding: NSUTF8StringEncoding)
如果需要执行指针前进等操作,请将其转换为非安全指针,如下所示:

NSString(bytes: UnsafePointer<Byte>(buffer) + 28, length: Int(buffer[27]), encoding: NSUTF8StringEncoding)
NSString(字节:UnsafePointer(buffer)+28,长度:Int(buffer[27]),编码:NSUTF8StringEncoding)

如果您需要将字节数组转换为NSString,那么只需使用

NSString(bytes: buffer, length: buffer.length, encoding: NSUTF8StringEncoding)
如果需要执行指针前进等操作,请将其转换为非安全指针,如下所示:

NSString(bytes: UnsafePointer<Byte>(buffer) + 28, length: Int(buffer[27]), encoding: NSUTF8StringEncoding)
NSString(字节:UnsafePointer(buffer)+28,长度:Int(buffer[27]),编码:NSUTF8StringEncoding)

(Ptr+28)实际上转化为子阵列调用。不能在swift数组上执行指针运算。(Ptr+28)实际上转换为子数组调用。不能在swift数组上执行指针运算。(Ptr+28)实际上转换为子数组调用。不能在swift数组上执行指针运算。(Ptr+28)实际上转换为子数组调用。你不能在swift数组上进行指针运算。太好了。非常感谢。杰出的非常感谢。杰出的非常感谢。杰出的非常感谢。