LoginSignup
1
2

More than 5 years have passed since last update.

Xcode8とSwift3にしたらAmbiguous use of 'init'というエラーが出た

Posted at

1. 概要

iOSアプリでBLEを使ってKonashiを動かしています。Swiftはほぼ初心者です。
先日Xcode8にアップデートしたところ、既存のプログラムもSwift3に自動修正してくれましたが、Ambiguous use of initというエラーが出てコンパイルできなかったので、対応をメモしておきます。
あまりネットに情報がなかったので、詳しい人にとっては当たり前のことかもしれません。

2. 参考サイト

Swiftが分かっていないのでエラーを検索するしかなかったのですが、以下の2つが役に立ちました。
1つ目のサイトは自分と同じエラーが出ている日本語のページだったのですが、書いてあった解決策が理解できず、そこに書いてあったStack OverflowのURL(2つ目)をたどっていきました。

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))

これでエラーはなくなって無事コンパイルできました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2