gpt4 book ai didi

IOS - 移动到单独的类(class)时播放 mp3 失败

转载 作者:行者123 更新时间:2023-11-28 22:52:32 25 4
gpt4 key购买 nike

我在类里面成功地播放了一个 mp3 文件。但是,当我将功能移出到单独的类时,它失败了。

这是工作代码:

标题:

#import <AVFoundation/AVFoundation.h>

@interface QuestionController : UIViewController
<UITableViewDataSource, UITableViewDelegate, UISplitViewControllerDelegate>
{
AVAudioPlayer *audioPlayer;

}

工作代码:

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/A.mp3", [[NSBundle mainBundle] resourcePath]]];

NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = 0;

if (audioPlayer == nil)
NSLog(@"audio errror: %@",[error description]);
else
[audioPlayer play];

这是新类(class):

标题:

#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>


@interface AudioPlayer : NSObject {

}

- (void *) playAudioFile:(NSString *) mp3File;

@end

实现:

  #import "AudioPlayer.h"

@implementation AudioPlayer

- (void *) playAudioFile:(NSString *) mp3File {

NSLog(@"mp3file to play: %@", mp3File );

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@", mp3File, [[NSBundle mainBundle] resourcePath]]];

NSError *error;

AVAudioPlayer *audioPlayer;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = 0;

if (audioPlayer == nil) {
NSLog(@"audio errror: %@",[error description]);
}
else {
[audioPlayer play];
}
[audioPlayer release];

return 0;
}

@end

调用代码如下:

   AudioPlayer *audioPlayer = [[AudioPlayer alloc] init];

[audioPlayer playAudioFile:@"/A.mp3"];

但是,当它在单独的类中运行时,它没有成功创建播放器并转到“audio player == nil”分支

这是输出:

012-07-21 07:14:54.480 MyQuiz[6655:207] mp3file to play: /A.mp3
2012-07-21 07:15:40.827 MyQuiz[6655:207] audio errror: Error Domain=NSOSStatusErrorDomain Code=-43 "The operation couldn’t be completed. (OSStatus error -43.)"

网址是“file://localhost/A.mp3”

知道我做错了什么吗?当我重构为单独的方法时,我总是遇到麻烦。真令人沮丧。

最佳答案

您的网址有误,请更改此行

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@", mp3File, [[NSBundle mainBundle] resourcePath]]];

为此:

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@", [[NSBundle mainBundle] resourcePath], mp3File]];

关于IOS - 移动到单独的类(class)时播放 mp3 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11591936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com