【问题标题】:Convert NSData from local NSURL从本地 NSURL 转换 NSData
【发布时间】:2014-06-05 14:11:32
【问题描述】:

我有一个使用 AVAudioPlayer 类的声音播放器。我在另一个视图中下载了一些项目并将文件路径存储为 NSURL,然后将 NSURL 传递给 Player 视图控制器。但是我在尝试传递对象时遇到错误。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString path]: unrecognized selector sent to instance 0x1700c86c0'

这里是代码:

NSData *data = [NSData dataWithContentsOfFile:[podcastSource path]];
NSError *error;
mPlayer = [[AVAudioPlayer alloc] initWithData:data error:&error];
[mPlayer setDelegate:self];

if (mPlayer == nil)
{
    NSLog(@"%@",error);
}
else
{
    [self.player play];
....
}

请注意,我从 NSURL 收到的文件路径是这种形式:

/var/mobile/Applications/xxxxxx/Documents/90989.mp3

【问题讨论】:

  • 从错误看来,当 podcastSource 应该是一个 url 时,它似乎是一个字符串......在请求其路径之前将其转换为 NSUrl。
  • “podcastSource”似乎是字符串,您将其用作NSURL 实例。

标签: ios objective-c cocoa-touch nsdata nsurl


【解决方案1】:

从错误来看,如果您要请求其路径,podcastSource 似乎是一个 NSString,而它需要是一个 NSUrl

according to the Apple DocsdataWithContentsOfFile: 接受 NSString 作为参数,因此无需将podcastSource 转换为NSUrl 或请求NSUrl 的路径。

如果 podcastSource 是您的完整文件名,则应该可以:

NSData *data = [NSData dataWithContentsOfFile:podcastSource];

【讨论】:

    猜你喜欢
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2015-03-23
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多