如何在Swift 3中使用非安全指针

如何在Swift 3中使用非安全指针,swift,swift3,c-strings,unsafe-pointers,Swift,Swift3,C Strings,Unsafe Pointers,我试图用Martin R的函数来回答这个问题: 然而,非安全指针行不再适用于Swift 3,我很难理解它。我将如何使该代码适应Swift 3 if var string = String.fromCString(UnsafePointer(outdata.bytes)) { string = string.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet()) output = string.co

我试图用Martin R的函数来回答这个问题:

然而,非安全指针行不再适用于Swift 3,我很难理解它。我将如何使该代码适应Swift 3

if var string = String.fromCString(UnsafePointer(outdata.bytes)) {
    string = string.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet())
    output = string.componentsSeparatedByString("\n")
}

另外,如果您想尝试使用该函数,您需要“导入Cocoa”。

在Swift 3中,
readDataToEndOfFile()
返回一个
数据
值,而不是
NSData
。 你直接问题的答案是

let data: Data = ...
let string = data.withUnsafeBytes { String(cString: UnsafePointer<CChar>($0)) }

再次考虑引用的代码,使用
String.fromCString()
可能不是最好的解决方案。我稍后会更新。
let outdata = outpipe.fileHandleForReading.readDataToEndOfFile()
if var string = String(data: outdata, encoding: .utf8) {
    string = string.trimmingCharacters(in: .newlines)
    output = string.components(separatedBy: "\n")
}