0

画像が URL から読み込まれません。NSURL をログに記録すると、正しく表示されます

my.website.com/images/image1.png

しかし、ブレークポイントを設定すると、デバッガー コンソールに NSURL が次のように表示されます。

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

Web ブラウザーで 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 の互換性に関する私の理解に誤りがある場合に備えて、キャストが追加されました。運がない。

4

1 に答える 1

0

これは非常に恥ずかしいことですが、誰も誤解しないように私の間違いを共有します.

ImageJSON オブジェクトでプロトコル (http://) を指定するのを忘れていました。NSURL クラスには何らかのデフォルトの HTTP チェックがあると考えましたが、NSURL で使用できる他のプロトコルがあるため、それは実現不可能であることに気付きました。

デバッガー、ええと、バグを指摘してくれた@rmaddyに感謝します。

于 2013-08-28T03:11:32.870 に答える