Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 3中的不安全字节_Ios_Swift_Xcode_Swift3 - Fatal编程技术网

Ios Swift 3中的不安全字节

Ios Swift 3中的不安全字节,ios,swift,xcode,swift3,Ios,Swift,Xcode,Swift3,我正在写一个文件到磁盘,我正在把我的代码转换成Swift 3的过程中,遇到了一些问题。我想看看有没有人能把我推向正确的方向 我当前的代码块是: open let text: NSString data = possibleData ?? Data() open let fileURL: URL? open let fileEncoding: String.Encoding? fileprivate let data: Data! text = NSString(bytesNoCopy: Uns

我正在写一个文件到磁盘,我正在把我的代码转换成Swift 3的过程中,遇到了一些问题。我想看看有没有人能把我推向正确的方向

我当前的代码块是:

open let text: NSString
data = possibleData ?? Data()
open let fileURL: URL?
open let fileEncoding: String.Encoding?
fileprivate let data: Data!

text = NSString(bytesNoCopy: UnsafeMutableRawPointer(mutating: data.bytes.bindMemory(to: Void.self, capacity: data.count)), length: data.count, encoding: encoding.rawValue, freeWhenDone: false)!
Swift说调用data.bytes不可用,我需要使用.unsafebytes。我不理解调用不安全字节的方式(它不像将字节切换为不安全字节那么简单)

所以我做了一点研究,有人说用一个封闭块,像这样:

data.withUnsafeMutableBytes {(bytes: UnsafeMutablePointer<UInt8>)->Void in
             //work with bytes in here
        }
data.withUnsafeMutableBytes{(字节:UnsafeMutablePointer)->Void in
//在这里使用字节
}
我的问题是,我应该在闭包块中放入什么来让我的上述代码正常工作?我想我错过了一些基本的东西。我不能使用字节,因为它再次给出相同的错误


有人有什么想法吗?谢谢

如果确实需要使用此模式,假设
数据
var
而不是
let
,则可以执行以下操作:

let text = data.withUnsafeMutableBytes { bytes in
    return NSString(bytesNoCopy: bytes, length: data.count, encoding: encoding.rawValue, freeWhenDone: false)!
}
或者,我不知道您为什么要使用
NSString
,这样您就可以:

let text = data.withUnsafeMutableBytes { bytes in
    return String(bytesNoCopy: bytes, length: data.count, encoding: encoding, freeWhenDone: false)!
}
坦率地说,整个模式似乎很脆弱(为什么强制强制转换?为什么使用不安全的指针而不是各种安全模式?等等)。如果要将其写入文件,那么为什么不直接写入
数据

do {
    try data.write(to: fileURL)
} catch {
    print("Error: \(error.localizedDescription)")
}

可能重复您实际想要实现的目标?将字符串转换为数据,或将字符串转换为数据?将字符串或数据写入文件?什么是给定的,什么是要计算的?抱歉,原来这是以前的开发人员使用的“Swiftache”的一部分。我刚升级过,现在很好,谢谢!谢谢,原来这段代码是Swifache(第三方库)的一部分。我下载了最新的。我完全错过了这一点,当发布的方式,文件被打破了b/c和b/c之前的开发人员删除了评论。不过非常感谢,您帮助我理解了这一点(通过全面询问代码的形式)。