博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么有时候NSData转换成NSString的时候返回nil
阅读量:6228 次
发布时间:2019-06-21

本文共 2837 字,大约阅读时间需要 9 分钟。

为什么有时候NSData转换成NSString的时候返回nil

有时候,NSData明明有值,可是,当转换成NSString的时候,却没有值,现在来进行测试:)

-现在提供测试用素材-

源码如下:

////  AppDelegate.m//  TestNSData////  Created by YouXianMing on 14-8-30.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "AppDelegate.h"@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    // 获取bundle路径    NSString *path = [[NSBundle mainBundle] pathForResource:@"YouXianMing.png"                                                     ofType:nil];        // 获取文件    NSData *data = [NSData dataWithContentsOfFile:path];        // 打印文件长度    NSLog(@"data.length = %lu", (unsigned long)data.length);        return YES;}@end

打印结果如下:

2014-08-30 07:47:16.146 TestNSData[1382:60b] Cannot find executable for CFBundle 0x8e5dfe0 </Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/AccessibilityBundles/CertUIFramework.axbundle> (not loaded)

2014-08-30 07:47:16.193 TestNSData[1382:60b] data.length = 1210569

我们把NSData转换成NSString试一下:)

////  AppDelegate.m//  TestNSData////  Created by YouXianMing on 14-8-30.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "AppDelegate.h"@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    // 获取bundle路径    NSString *path = [[NSBundle mainBundle] pathForResource:@"YouXianMing.png"                                                     ofType:nil];        // 获取文件    NSData *data = [NSData dataWithContentsOfFile:path];        // 打印文件长度    NSLog(@"data.length = %lu", (unsigned long)data.length);        // 将NSData转换为字符串    NSString *dataStr = [[NSString alloc] initWithData:data                                              encoding:NSUTF8StringEncoding];        NSLog(@"dataStr = %@", dataStr);        return YES;}@end

打印结果如下:

2014-08-30 08:02:30.617 TestNSData[1459:60b] Cannot find executable for CFBundle 0x99add90 </Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/AccessibilityBundles/CertUIFramework.axbundle> (not loaded)

2014-08-30 08:02:30.800 TestNSData[1459:60b] data.length = 1210569

2014-08-30 08:02:30.801 TestNSData[1459:60b] dataStr = (null)

注意,上面的打印是null哦:)

 

以下给出解释:

You can't convert an UIImage to NSString by using initWithData:encoding: method. This method is only for converting an string's data to NSString (an Text File for example).

If you are trying to convert any kind of binary data to NSString, there are some kind of encoding available. Base64 is widely used.

你不能够将UIImage通过方法initWithData:encoding:来转换.这个方法只能够转换字符格式的data(例如文本格式的文件).

如果你尝试着将任意类型的NSData转换成NSString,有许多编码可供你选择.Base64是使用最广泛的.

 

结论:

你只能够将字符格式的NSData转换成字符串.

转载地址:http://zvina.baihongyu.com/

你可能感兴趣的文章
PDF文档页面如何重新排版?
查看>>
基于http协议使用protobuf进行前后端交互
查看>>
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
StringBuilder用法小结
查看>>
对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
Myeclipes快捷键
查看>>
我的友情链接
查看>>
ToRPC:一个双向RPC的Python实现
查看>>
我的友情链接
查看>>