为啥字符和正斜杠被附加到我的 NSURL?

Posted

技术标签:

【中文标题】为啥字符和正斜杠被附加到我的 NSURL?【英文标题】:Why are characters and forward slashes being appended to my NSURL?为什么字符和正斜杠被附加到我的 NSURL? 【发布时间】:2013-08-28 02:32:39 【问题描述】:

我的图片没有从它们的 URL 加载。当我记录 NSURL 时,它看起来是正确的

my.website.com/images/image1.png

但是当我设置断点时,NSURL 在调试器控制台中显示为

my.website.com/images/image1.png\x05\b

我已经通过我的网络浏览器检查了 json,它是完全有效的。字符串以“png”的“g”结尾。

我正在使用 SDWebImage 为我的表格单元格异步加载图像。用于图片的 URL 来自一个对 JSON 进行编码的 php 文件。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    SpotsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SpotCell" forIndexPath:indexPath];

    NSInteger row = indexPath.row;

    if (self.spotDictionary)
    
        NSDictionary* spot = (NSDictionary*)[self.spotDictionary objectForKey:[NSString stringWithFormat:@"%d", row]];
        NSString* title = [spot objectForKey:@"Title"];
        NSURL* imageURL = [NSURL URLWithString:(NSString*)[spot objectForKey:@"Image"]]; NSLog(@"%@", imageURL);
        UIImage* placeholder = [UIImage imageNamed:@"placeholder.png"];

        // See ~*~ below
        NSURL* testURL = [NSURL URLWithString:@"http://www.hdwallpaperspot.com/wp-content/uploads/2013/08/Volvo-station-wagon-612pb.jpg"];

        cell.nameLabel.text = title;

        [cell.pictureView setImageWithURL:imageURL
                         placeholderImage:placeholder]; // SDWebImage category for UIImage

//breakpoint here
    

    return cell;

~*~ 为了确保 SDWebImage 正常运行,我从网上抓取了一张图片来临时测试该库,它的性能非常好。我检查了"Image" 对象的类,它是_NSCFString。添加了(NSString*) 演员表,以防我对 NSCFString 和 NSString 之间的可互换性的理解存在缺陷。没运气。

【问题讨论】:

这是一个调试器问题。搜索,您会发现其他人报告此问题。在调试器命令行中输入po imageURL,您将看到预期的值。 是的,你是对的。但!图片仍然不会从imageURL 加载。然而他们将来自testURL。该 URL 完全有效,我可以将其从日志控制台复制并粘贴到 Firefox 中并加载。所以我不禁觉得奇怪的角色还在做巫术。 【参考方案1】:

这很尴尬,但我会分享我的错误,以免有人误解。

我忘记在我的Image JSON 对象中指定协议 (http://)。 我认为 NSURL 类会有某种默认的 HTTP 检查,但我意识到这是不可行的,因为还有其他协议可以与 NSURL 一起使用。

感谢@rmaddy 指出调试器,嗯,错误。

【讨论】:

以上是关于为啥字符和正斜杠被附加到我的 NSURL?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 JS 的 reduce 数组方法中将布尔值附加到我的当前值?

为啥我不能将数字附加到我的变量?!在斯威夫特 3

为啥我的 UITapGestureRecognizer 在我将它附加到我的 UITableViewCell 中的元素时不起作用?

为啥字符串对象不显示被附加到它的按键字符?

为啥片段着色器没有附加?

使用用户提交的内容重新填充 textarea(使用 ASCII 代码并且在某些字符之前没有附加的正斜杠)