2016-08-16 2 views
8

コードは今スウィフト3に次のエラーがスローされます。ここではは「バイト」は使用できません:使用withUnsafeBytes以前スウィフト2.2で働いていた代わりに

enter image description here

は私のコードです:

let tempData: NSMutableData = NSMutableData(length: 26)! 
tempData.replaceBytes(in: NSMakeRange(0, data.count), withBytes:data.bytes) 

"data.bytes"を置き換えてエラーを修正する必要はありますか?私は 'withUnsafeBytes'を実装しようとしましたが、Appleのドキュメントを見ていましたが、私の頭の中でそれを得ることはできません!

data
+0

あなたは 'data'のソースを提供していませんが、' Data'に変換することができれば、これははるかに簡単になり、 'NSMutableData'と' Data'を橋渡しする必要はありません。 'replaceSubrange'を使うだけです。 –

答えて

9

Data型を持つと仮定すると、次の作業をする必要があり:

let tempData: NSMutableData = NSMutableData(length: 26)! 
data.withUnsafeBytes { 
    tempData.replaceBytes(in: NSMakeRange(0, data.count), withBytes: $0) 
} 

Data

/// Access the bytes in the data. 
/// 
/// - warning: The byte pointer argument should not be stored and used outside of the lifetime of the call to the closure. 
public func withUnsafeBytes<ResultType, ContentType>(_ body: @noescape (UnsafePointer<ContentType>) throws -> ResultType) rethrows -> ResultType 

方法を使用して。クロージャ内の$0は、UnsafePointer<Void> バイト(Xcode 8ベータ6ではUnsafeRawPointer)です。

+0

スウィフト3.0の回答を更新できますか? –

+0

@TejasArdeshna:それは*スウィフト3です。 –

+0

なぜ、長さは26としてハードコードされていますか?大規模なデータには問題はありませんか?私はイオスに新しいです、ただ確認してください。 –

関連する問題