みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Swiftについて教えてください

マイクから音を検知したいと思い、
http://blog.koogawa.com/entry/2016/04/17/133052
の記事を参考にさせていただいています
self.startUpdatingVolume()で呼び出すメソッドをサンプルと同じように定義したのですが、たくさんのエラーが出て、解決方法が分からず困っています。
var dataFormat = AudioStreamBasicDescription(
mSampleRate: 44100.0,
mFormatID: kAudioFormatLinearPCM,
mFormatFlags: AudioFormatFlags(kLinearPCMFormatFlagIsBigEndian | kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked),
mBytesPerPacket: 2,
mFramesPerPacket: 1,
mBytesPerFrame: 2,
mChannelsPerFrame: 1,
mBitsPerChannel: 16,
mReserved: 0)

のところで
Cannot find an initializer for type 'AudioStreamBasicDescription' that accepts an argument list of type '(mSampleRate: Double, mFormatID: Int, mFormatFlags: UInt32, mBytesPerPacket: Int, mFramesPerPacket: Int, mBytesPerFrame: Int, mChannelsPerFrame: Int, mBitsPerChannel: Int, mReserved: Int)'
エラーの内容を調べて、引数リストを受け付ける初期化メソッドは['AudioStreamBasicDescription' には見つかりません。ということは分かったのですが、Core Audioについて理解が不十分なところが多いので、解決方法が分かりません。解決方法を教えてください、よろしくお願いします。

投稿日時 - 2016-05-08 05:47:50

QNo.9169365

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

他の方も仰っている通り、お使いの Xcode バージョン(7.3など)を教えて頂けると回答しやすくなると思います。また、可能であればプロジェクトの "Deployment Target" も添えて頂けるとさらに良いです(画像を添付しました)。

投稿日時 - 2016-05-08 13:14:35

補足

Xcode バージョン6.4
Deployment Target8.0
です。
Xcode バージョン7.2を使い、Deployment Target8.0にすると質問させていただいた箇所のエラーは消えました。

投稿日時 - 2016-05-14 08:42:28

お礼

回答ありがとうございます。マイクから音を検知したいと思いサイトを参考にさせていただいています。

投稿日時 - 2016-05-14 08:42:19

ANo.1

そのAudioStreamBasicDescriptionの定義コードを私の環境(Xcode7.3環境)にコピペしてみましたが、特にエラーは出ません。

以前から古いXcode環境を使用されていたかと思うのですが、現在お使いのXcodeのバージョンはいくつですか?
もしかすると古いXcode(古いSDK)だとそのイニシャライザがまだ定義されておらず使えないのかもしれません。
もしそうであれば、
http://qiita.com/syuhei1985/items/4404f1360863ba8a06ac
とかを参考に
var dataFormat = AudioStreamBasicDescription()
dataFormat.mSampleRate = 44100.00
dataFormat.mFormatID = kAudioFormatLinearPCM
dataFormat.mFormatFlags = kLinearPCMFormatFlagIsBigEndian | kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked
dataFormat.mBytesPerPacket = 2
dataFormat.mFramesPerPacket = 1
dataFormat.mBytesPerFrame = 2
dataFormat.mChannelsPerFrame = 1
dataFormat.mBitsPerChannel = 16
と、パラメータなしでAudioStreamBasicDescriptionを生成し、プロパティを1個ずつ初期化すればうまくいくかもしれません。

可能ならそろそろ最新のXcodeに移行した方がネットで解説されている情報を利用しやすいと思います。
ただし、Swiftのバージョンも変わる可能性がありますので、その場合、言語仕様の変更点がいろいろあり、これまで正常にビルドできていたコードがいくつかビルドエラーになる可能性があります。それを修正する余裕のある時に実施することをお勧めします。

投稿日時 - 2016-05-08 07:10:06

補足

Xcode バージョン6.4です。
Xcode バージョン7.2を使うと質問させていただいた箇所のエラーは消えました。Xcode バージョン7.3で試してみます。

投稿日時 - 2016-05-14 08:41:26

お礼

回答ありがとうございます。

投稿日時 - 2016-05-14 08:41:11

あなたにオススメの質問