【问题标题】:NSURL URLWithString: giving nilNSURL URLWithString:给零
【发布时间】:2012-03-12 18:47:26
【问题描述】:

请看下面的代码:

UIImage *image;
NSString *str = [[[Data getInstance]arrPic]objectAtIndex:rowIndex];
NSLog(str);
NSURL *url = [NSURL URLWithString:str];
NSData *data = [NSData dataWithContentsOfURL:url];
image = [UIImage imageWithData:data];  

str 给了我http://MyDomain/Pics\\1.png,但 url 给了我nil。

【问题讨论】:

    标签: iphone nsurl


    【解决方案1】:

    从 iOS9 开始,stringByAddingPercentEscapesUsingEncoding 已弃用。要安全地转义 URL 字符串,请使用:

    NSMutableCharacterSet *alphaNumSymbols = [NSMutableCharacterSet characterSetWithCharactersInString:@"~!@#$&*()-_+=[]:;',/?."];
    [alphaNumSymbols formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];
    
    str = [str stringByAddingPercentEncodingWithAllowedCharacters:alphaNumSymbols];
    

    这会创建字符集以保持原样,并要求将这些字符集之外的所有内容转换为 %percent 编码值。

    【讨论】:

      【解决方案2】:

      根据文档,URLWithString: 方法采用 格式良好的 URL 字符串:

      此方法要求 URLString 包含任何必要的百分比转义码,它们是“:”、“/”、“%”、“#”、“;”和“@”。请注意,“%”转义是通过 UTF-8 翻译的。

      我建议你之前使用NSString的(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding;方法重试。

      【讨论】:

        【解决方案3】:

        试试这个,

        [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        

        【讨论】:

        • 这在 iOS 9.0 中已弃用。
        • 如果 URL 中有 #,则会通过将 # 转换为 %2 来破坏 URL
        • 试试这个:[string urlEncodeUsingNSUTF8StringEncoding];
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-30
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-04
        • 2010-12-31
        相关资源
        最近更新 更多