ios - 有什么办法可以知道 NSData 对象包含哪个 Class 实例?

标签 ios iphone objective-c cocoa-touch nsdata

我有一个从 Web 服务器获得的 NSData 对象。

这个数据对象的内容应该是一个 UIImage 。但是当我在下面的代码中使用它时:-

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData * responseData, NSError *err) {

    if (err) {
        NSLog(@"Err %@",err.description);

    }else
    {

        if (responseData) 
        {
            NSLog(@"Data Length %d  ",[responseData length]);
            UIImage *img = [[UIImage alloc] initWithData:responseData];

            if (img) {
                NSLog(@"image in not null");
                self.imageView.image = img;
            }
            else
            {
                NSLog(@"image is null");
            }
        }

        else
        {
            NSLog(@"not returning anything");
        }
    }
}];

输出说:-

Data Length 2786779
image is null

所以我猜它不是图片

有没有办法让我知道这个 NSData 包含哪个类实例

附言:- 我也用过

NSLog("Description %@",data.description);

但它只生成了一个巨大的十六进制代码序列

最佳答案

嗯…… 您的服务器可能正在发送图像,但它已编码。

获取 UIImage *img = null 并不一定意味着响应数据不是图像。如果你不解码它,它当然是空的

我认为您的响应数据是用 Base64 编码的...(大多数服务器都这样做)

如果是这样,...

首先从这个 Link 下载 .h 和 .m 文件

在您的项目中添加和导入它们。

然后使用这段代码

NSString *str = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSData *data = [NSData dataFromBase64String:str];
UIImage *img = [[UIImage alloc] initWithData:data];

此 img 将包含您的图像。如果您的服务器真的在发送图像。

请注意.. 这段代码中并非所有 NSString *str 都是 UIImage 的表示 它可能是它的一部分。其余的可以是与此图像相关的信息。 因此您只需解码响应的图像部分。

希望这有帮助....

关于ios - 有什么办法可以知道 NSData 对象包含哪个 Class 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831613/

相关文章:

javascript - 切换可见性时字体大小会发生变化

IOs/phonegap - 无法提交到 itune - 无效的段对齐

iphone - 如何从 iOS 应用程序发送添加好友请求(给 facebook 用户)?

iphone - objective-c : How to find heading (direction) from location services?

ios - UILabel 文本颜色更改

objective-c - 通过 Objective C 代码“显示包内容”

ios - 使用 Doorkeeper & Devise 连接到 Rails API 时无法注销 iOS Swift 应用程序

ios - 我的 Answer SDP(WebRTC、iOS 项目)有什么问题

iphone - 访问 navcontroller iphone 的 rootviewController 时出现问题

ios - 检查并用 NSDictionary/NSArray 中的空字符串替换所有空值