无法将 NSString 转换为 NSURL

Posted

技术标签:

【中文标题】无法将 NSString 转换为 NSURL【英文标题】:Unable to convert NSString to 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 错了!已经在这里回答了:- ***.com/questions/30566795/… 很好地链接了正确的解决方案和对另一个答案的引用。想知道评论的哪一部分是错误的? 关于将视频分享到 Instagram 的精彩完整博文:horison blog 【参考方案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"];

以上是关于无法将 NSString 转换为 NSURL的主要内容,如果未能解决你的问题,请参考以下文章

React Native - nsnumber类型的json值'0'无法转换为nsstring

将 JSON 格式的 NSString 转换为 NSArray 失败

如何以编程方式将 NSData 转换为 NSString? [复制]

无法将“__NSCFBoolean”(0x100b123b8)类型的值转换为“NSString”(0x100f0ab48)

无法将“__NSArrayI”(0x106d27d88)类型的值转换为“NSString”(0x107be3c40)

nsnumber 类型的 json 值“2”无法转换为 nsstring