Xcode8とSwift3にしたらAmbiguous use of 'init'というエラーが出た
1. 概要
iOSアプリでBLEを使ってKonashiを動かしています。Swiftはほぼ初心者です。
先日Xcode8にアップデートしたところ、既存のプログラムもSwift3に自動修正してくれましたが、Ambiguous use of initというエラーが出てコンパイルできなかったので、対応をメモしておきます。
あまりネットに情報がなかったので、詳しい人にとっては当たり前のことかもしれません。
2. 参考サイト
Swiftが分かっていないのでエラーを検索するしかなかったのですが、以下の2つが役に立ちました。
1つ目のサイトは自分と同じエラーが出ている日本語のページだったのですが、書いてあった解決策が理解できず、そこに書いてあったStack OverflowのURL(2つ目)をたどっていきました。
- 【iOS】Swift3+XCode8に変換した際に発生したエラーの対応 - Brew the Mash
- ios - Swift 3 and Xcode8 - Ambiguous use of init - Stack Overflow
3. 作業環境
- MacBook Air (13-inch, Mid 2012) & macOS Sierra 10.12
- Xcode8
- iPhone6 plus + iOS 10.0.2
4. エラー箇所と変更内容
エラー箇所は以下の行で、エラー内容は「Ambiguous use of 'init'」でした。
let data: Data = Data(bytes: UnsafePointer<UInt8>(&value), count: 1)
参考サイト2には
var intVal = 1000
let data = Data(buffer: UnsafeBufferPointer(start: &intVal, count: 1))
print(data as NSData) // <e8030000 00000000>
のような解決策が書いてあったので、これに沿ってエラー箇所を以下のように書き換えました。
// let data: Data = Data(bytes: UnsafePointer<UInt8>(&value), count: 1)
let data = Data(buffer: UnsafeBufferPointer(start: &value, count: 1))
これでエラーはなくなって無事コンパイルできました。
Author And Source
この問題について(Xcode8とSwift3にしたらAmbiguous use of 'init'というエラーが出た), 我々は、より多くの情報をここで見つけました https://qiita.com/yuji_miyano/items/42c8856ef8408c9bc472著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .