【问题标题】:pathForResource from URL来自 URL 的 pathForResource
【发布时间】:2011-12-07 23:26:05
【问题描述】:

我有这个代码:

NSString *songPathForm = @"http://www.example.com/file.wav";

NSString *song = [[NSBundle mainBundle]pathForResource:songPathForm ofType:nil];

但是歌曲最终为空,我做错了什么?

【问题讨论】:

  • 你想达到什么目的?您的代码将 URL 传递给方法,以获取路径。既然已经有了 URL,为什么还需要路径呢?
  • @kiamlaluno 我正在通过 rss 提要提取音频链接以使用 AVFoundation 框架播放,我尝试仅使用 NSString songPathForm 播放它们,但它不会那样工作

标签: objective-c nsstring nsurl nsbundle mainbundle


【解决方案1】:

这里的“路径”是指本地文件系统上的文件路径。你给 NSBundle 的是一个 URL。 NSBundle 通常用于获取应用程序本身中的文件(当您从 Finder 中选择“显示包内容”时会看到什么)。 NSBunlde 也期望 relative 文件路径,而不是绝对路径(因为您不知道应用程序在哪里)。

【讨论】:

    【解决方案2】:

    pathForResource 方法仅适用于包中的文件。例如,如果您想通过外部 URL 访问文件,可以在 NSData 类中使用 dataWithContentsOfURL:

    【讨论】:

    • 当我使用这个时: NSData* song = [NSData dataWithContentsOfURL: [NSURL URLWithString:songPathForm]];我得到一堆废话被输出,比如 004d0000 000e00004 之类的东西
    • @Matt 这不是废话;这是文件的内容。
    • 虽然不行,我用这个播放音乐文件,NSData不能播放
    • 好的,我想你应该在问之前做一些研究。我不知道你用什么来播放声音,但如果你使用AVAudioPlayer,你可以使用initWithData:error:方法来播放存储在NSData中的声音。
    【解决方案3】:

    要播放您知道其 URL 的声音,您应该使用类似于以下的代码:

    NSSound *sound = [[NSSound alloc] initWithContentOfURL: [NSURL URLWithString:songPathForm] byReference:NO];
    [sound play];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 2013-12-09
      • 1970-01-01
      • 2011-04-26
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多