使用Swift的可选绑定直接获取NSData的字节?

问题描述:

我有下面的代码,假设dataNSData?类型:使用Swift的可选绑定直接获取NSData的字节?

if let myData = data { 
     let bytes = UnsafePointer<UInt8>(myData.bytes) 
     ... 
    } 

如何减少这一条语句,如:

if let bytes = UnsafePointer<UInt8>?(data?.bytes) { 
     ... 
    } 

以上给出了一个错误:​​

同样为Getting the count of an optional array as a string, or nil,您可以使用Optionalmap() 方法:

/// If `self == nil`, returns `nil`. Otherwise, returns `f(self!)`. 
@warn_unused_result 
@rethrows public func map<U>(@noescape f: (Wrapped) throws -> U) rethrows -> U? 

你的情况:

if let bytes = (data?.bytes).map({ UnsafePointer<UInt8>($0) }) { 

} 

(data?.bytes)使用可选的链接和有型 UnsafePointer<Void>?。映射函数用于将 转换为UnsafePointer<UInt8>?,最终用 可选绑定对其进行解包。