0

私のアプリでは、曲を録音して保存することができます。アプリを更新すると、AVAudioPlayerを初期化しようとするとエラーが発生します。曲はドキュメントディレクトリに保存されます。その曲を使用してドキュメントディレクトリへのURLを作成すると、上記のエラーが発生します。同様の質問に対する他の回答を読むと、-43はファイルが見つからないというエラーであるため、すべてをドキュメントディレクトリに出力し、アクセスしようとしているファイルがドキュメントディレクトリにあることがはっきりとわかります。私は単に使用しているので、ドキュメントディレクトリへのパスでエラーになることはありません

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

ドキュメントディレクトリを取得します。

オーディオプレーヤーを初期化する方法、アクセスしようとしているエラーとURL:

[[AVAudioPlayer alloc]initWithContentsOfURL:urlOfSong error:&error]; 
if (error)
        {
            NSLog(@"Error in audioPlayer: %@", 
                  [error localizedDescription]);
            NSLog(@"error with this: %@",urlOfSong);
        }


2013-01-24 18:51:40.223 app[14104:907] Error in audioPlayer: The operation couldn’t be completed. (OSStatus error -43.)
2013-01-24 18:51:40.224 app[14104:907] error with this: file://localhost/var/mobile/Applications/C8F1FB54-CF7E-46EC-9B87-8BE3CE9B0A3D/Documents/k%20-%20Spongebob.m4a

私が再生しようとしているファイルはk-Spongebob.m4aと呼ばれていることがわかります

これがマイドキュメントディレクトリの出力です。

2013-01-24 18:51:40.228 app[14104:907] (
    "Recording 11413, 10:28 PM - All I Need.m4a",
    "k - Spongebob.m4a" 
)

これはアプリを更新した後でのみであると述べたことを覚えておいてください。アップデートを送信する前にテストすると、すべてが完全に機能しました。また、新しい曲を録音して保存し、まったく同じ方法で再生しようとすると、問題なく動作します。これは、アップデート前に録音した曲を再生しようとしているときに発生します。

助けてくれる人は?

4

1 に答える 1

2

私はそれを考え出した。どうやらアプリを更新すると、パス内のドキュメントの前にある文字と数字(つまり、0B6DDD37-792B-4C1A-98A3-1A96B64B4DB0)が変更されます。古い文字と数字で古いパスを保存し、そのパスで初期化しようとしたため、エラーが発生しました。ドキュメントディレクトリへの現在のパスで初期化する必要がありました。これは、アップデートを送信する前にテストしていたときにこのエラーが発生しなかった理由を説明しています。

于 2013-01-25T00:56:28.007 に答える