7

以下に示すように、AFNetworking UIImageView 呼び出しを使用して URL から画像をロードしようとしています。

[self.image setImageWithURL:[NSURL URLWithString:feed.imageURL] placeholderImage:     [UIImage imageNamed:@"logo"]];

プレースホルダー画像は常に表示されますが、「feed.imageURL」からの実際の画像は表示されません。URL が実際に正しいことを確認しました。確認するためにハードコーディングしましたが、それでも何もありません。

私の基本的なアプリのセットアップはタブ コントローラーです...そして、viewDidLoad で、HTTP 要求を実行して JSON データを収集するメソッド「fetchFeed」を呼び出します。

私のリクエストブロックは次のようになります:

AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                    JSONRequestOperationWithRequest:request
                                     success:^(NSURLRequest *request, NSHTTPURLResponse   *response, id JSON) {
                                         [self parseDictionary:JSON];
                                         isLoading = NO;
                                         [self.tableView reloadData];

                                         } failure:^(NSURLRequest *request,   NSHTTPURLResponse *response, NSError *error, id JSON) {
                                             NSLog(@"Error: %@", error);
                                             [self showNetworkError];
                                             isLoading = NO;
                                             [self.tableView reloadData];
                                         }];
operation.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
[queue addOperation:operation];
4

5 に答える 5

9

私が画像を要求していたサーバーが送信content-type "image/jpg"していたことが判明し、デフォルトでは AFNetworking はこのファイル タイプをサポートしていません。

AFImageRequestOperation のクラス メソッドを次のように変更しました。

+ (NSSet *)defaultAcceptableContentTypes {
return [NSSet setWithObjects:@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon" @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", @"image/jpg", nil];
}

そしてそれは私の問題を解決しました。

于 2012-02-27T23:57:58.063 に答える
2

AFNetworking は、デフォルトではimage/jpg MIME TYPEをサポートしていません。

AFNetworking ライブラリを変更せずにサポートできます

[AFImageRequestOperation addAcceptableContentType:@"image/jpg"];
于 2013-12-12T03:35:28.193 に答える
0

同様の問題がありましたが、スペースを含む URL を渡していたことが判明しました。stringByAddingPercentEscapesUsingEncoding:画像を使用して URL を適切にエンコードすると、ロードされます。

于 2013-01-31T23:56:43.930 に答える
0

UI を操作するすべての操作は、メイン スレッドで実行する必要があります。そのため、完了ブロックで tableview データをリロードするときに「performSelectorOnMainThread:」を使用する必要がある場合があります。

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]
于 2012-02-27T04:06:17.893 に答える