【问题标题】:Unable to convert NSString to NSURL无法将 NSString 转换为 NSURL
【发布时间】:2015-06-01 05:34:45
【问题描述】:

我正在使用以下代码从 NSString 获取 NSURL,但我总是将 NSURL 设为 null:

NSString *CFURL = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)[assetURL absoluteString], NULL, CFSTR("!$&'()*+,-./:;=?@_~"), kCFStringEncodingUTF8));

NSString *instagramString = [NSString stringWithFormat:@"instagram://library?AssetPath=%@&InstagramCaption=%@", (NSURL *)CFURL, strInstagramCaption];

NSURL *instagramURL = [NSURL URLWithString:instagramString];

【问题讨论】:

  • 该问题缺乏足够的信息来回答,特别是缺少:assetURLstrInstagramCaption。也不要使用 CFURLCreateStringByAddingPercentEscapes 参见:SO Answer 使用 stringByAddingPercentEncodingWithAllowedCharacters:
  • @zaph 错了!已经在这里回答了:- stackoverflow.com/questions/30566795/…
  • 很好地链接了正确的解决方案和对另一个答案的引用。想知道评论的哪一部分是错误的?
  • 关于将视频分享到 Instagram 的精彩完整博文:horison blog

标签: ios objective-c xcode nsstring nsurl


【解决方案1】:

NSURL 本身不支持 instagram 协议。 Here are the supported protocols.

URL 加载系统支持使用以下方式访问资源 以下协议:

文件传输协议 (ftp://)

超文本传输​​协议 (http://)

带加密的超文本传输​​协议 (https://)

本地文件 URL (file:///) 数据 URL (data://)

如文档中所述,您必须创建一个custom protocol

【讨论】:

  • 你能帮我把instagramString转换成instagramURL吗?
  • 虽然这对于 URL 加载系统是正确的,但对于仅创建一个 URL 是不正确的,这将创建一个 URL:NSURL *instagramURL = [NSURL URLWithString:@"instagram://library?AssetPath=qqq"];
猜你喜欢
  • 2011-12-26
  • 2012-02-10
  • 2012-04-05
  • 2016-04-07
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
相关资源
最近更新 更多