私は完全なSwift初心者ですが、私はBLE用のアプリを迅速に作成しています。私は、iOSアプリケーションを構築してBLEと通信する方法を理解するために見つけたオープンソースコードの作業に取り組んでいます。私はそれをSwift 3に変換すると、いくつかのエラーが発生しました。Swift 3 "Inoutとして不変のまま渡すことはできません"
コード:
func int8Value() -> Int8 {
var value: Int8 = 0
copyBytes(to: &UInt8(value), count: MemoryLayout<Int8>.size)
return value
}
エラー:
Cannot pass immutable value as inout argument: function call returns immutable value
私はこれに対する解決策をオンラインで見てきたし、次を発見した:
は、私は次のコード行を見てみ、これらを実装してみました:
if let data = characteristic.value {
var bytes = Array(repeating: 0 as UInt8,count:someData.count/MemoryLayout<UInt8>.size)
data.copyBytes(to: &bytes, count:data.count)
}
と
let data = "foo".data(using: .utf8)!
let array = [UInt8](data)
let array = data.withUnsafeBytes {
[UInt8](UnsafeBufferPointer(start: $0, count: data.count))
}
を私は本当に以外のそれらの間の相関関係を理解していません共通変数はほとんどありません。誰かがCopyBytes関数の中で何が起こっているのか( "to"と "count"が何をしているのか)、エラーが何から来ているのか、私が見てきた例が、修正しようとしていますか?
@Martin Rを、あなたは私がした後、他のは....月を頼まれたとき、重複するとして、私の質問をマークし、なぜ私は混乱していますか? – zmillard
重複の時間的順序は関係ありません。ユーザーは、通常、「マスター」の質問として最良の回答を持つ質問を選択します。あなたの質問に重複としてマークされているためのペナルティはないので、これは心配するものではありません。 –
Ooh大丈夫、ありがとう@CodyGray – zmillard