【问题标题】:How to Hardcode a NSURL path?如何硬编码 NSURL 路径?
【发布时间】:2014-11-26 21:03:05
【问题描述】:

所以,这看起来应该超级简单,但我很难过......

我有一个正在开发的 iOS 应用程序,我正在从服务器下载视频内容,将其存储在 Documents 的自定义文件夹中,并在某个触发时尝试播放视频。我在我的 MovieViewController 中遇到了一些加载错误,因此我尝试调试从单独的独立应用程序中的文件路径构造的 NSURL。值得注意的是,相同的内容在添加到 Bundle 时效果很好,但数量很多,所以不能这样做。

不管怎样……

我在我的应用程序中设置了断点并复制了加载到我的电影播放器​​中的 NSURL 的路径,并试图将其硬编码到我的测试应用程序中的 NSURL 中。但我似乎不能只为它分配一个预先存在的值......例如。

NSURL *url = "file:///var/mobile/Containers/Data/Application/21078F3B-12C5-4D42-8B8B-3C85CB7A0A91/Documents/SecondStory/BloodAlley/MEDIA/copperthief.mp4" 

(这是我从调试区域的变量视图中复制出来的)。 它给了我错误:

*"ARC 不允许将非 Objective-C 指针类型 'char *' 隐式转换为 'NSURL '"

... 我似乎无法找到 SO ....

当然,在文件路径转换为 ​​NSURL 之前,我有文件路径的 NSString 表示,所以可以尝试重建它,但这让我很好奇为什么我不能只分配一个值......

【问题讨论】:

  • 老兄,有人无情地否决了我这周提出的每一个问题......我知道这个问题有一个明显的解决方案,但我正在努力进行研究并提出有价值的问题......跨度>
  • 我同意。有些人倾向于跳得太快而投反对票,这在许多情况下违背了分享想法的目的,因为人们会认为:好吧,我不想拿我的观点冒险,也不会问这个问题。结果,以后会遇到同样问题的其他人也会受到影响。我认为,在投反对票后,至少应该给出一个理由,并且在不平凡的情况下进行下载之前就该问题进行辩论会很好。

标签: ios nsurl


【解决方案1】:

如错误所述,"file:///var/.../copperthief.mp4"char * 而不是 NSURL

要将其转换为NSURL,首先您必须通过添加@ 前缀来获得char *NSString 表示:

@"file:///var/.../copperthief.mp4"

然后使用URLWithString:NSString 转换为NSURL

[NSURL URLWithString:@"file:///var/.../copperthief.mp4"];

【讨论】:

  • 好吧,这是有道理的......变量视图中的@在那里,但它抱怨是一个字符串......我复制了一个NSURL的值,所以很困惑...... .
  • 所以这引出了一个问题——也许这是真正的问题——如果我想为变量赋值,NSURL 表示会是什么样子??
  • @jesses.co.tt 嗯?如果你想给什么变量赋值?
  • 重读问题(或者不清楚?)。我有一个 NSURL 变量的值,这给我的应用程序带来了问题。我已经复制了该变量的 value 并尝试将 该值 直接分配给 NSURL 变量的另一个实例,以便调试该 NSURL...
  • @jesses.co.tt 不,您复制了NSURL路径,即NSString
【解决方案2】:

首先,"..." 不是 NSString。这是一个C字符串。 NSString 应该是@"...",不是吗?即使这样,如果你想要一个 NSURL,你也必须将 NSString 转换为 NSURL,不是吗?我的意思是,您不能分配 any 类型的字符串到 NSSURL 变量并期望它工作,对吗?这是一种计算机语言;你不能随便说什么旧事——你必须遵守规则。

【讨论】:

  • 当然,我理解它是 C 字符串而不是 NSString...请参阅我对 @Lyndset-Scott 回答的评论。
  • 我的回答远不止这些。
  • 当然,有,但你的回答相当迂腐和指责,所以我忽略了其余的问题,因为另一个答案是帮助进入核心问题,不是指手画脚……
  • 嗯,这不是真的。请记住,您的问题是关于神秘的错误消息“ARC不允许将非Objective-C指针类型'char *'隐式转换为'NSURL'”我的回复告诉你该消息的含义:这意味着你已经使用需要 Objective-C 对象的 C 字符串。我的意思是,如果你理解它是一个 C 字符串而不是 NSString,那么你为什么首先这样做呢? C 字符串不是对象;一个 NSString 是。即使它一个NSString,它也将仍然是错误的种类对象。但现在我只是在重复自己。
  • 很公平。发生的事情是这样的——我设置了一个断点,我的 URL 被分配并从一个字符串初始化。我复制了变量视图给我的那个值。我认为这是一个完整的 NSURL 表示。试图将它粘贴到一个新应用程序中,从中创建一个 NSURL 实例......它给了我一个从 NSString 到 NSURL 的赋值警告(它用@复制),所以我只是懒洋洋地取下了 @ 符号,将其转换为一个 C 字符串并得到一个不同的错误。很天真,当然......但真正的问题是红鲱鱼。将编辑问题。
猜你喜欢
  • 2011-01-07
  • 2014-06-30
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多