我想把NSData转换成NSString..最好的方法是什么?

我正在使用此代码,但最终字符串返回NULL

NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);

当我看到Console时,它将打印空.

推荐答案

NSString的doctor 说

https://developer.apple.com/documentation/foundation/nsstring/1416374-initwithdata

返回值为NSString对象 通过将 使用将数据转换为Unicode字符 编码.返回的对象可以是 与原来的接收器不同. 如果初始化,则返回nil 由于某种原因而失败(例如,如果 数据不代表以下项目的有效数据 编码).

你应该try 其他编码来判断它是否解决了你的问题

 // The following constants are provided by NSString as possible string encodings.
enum {
   NSASCIIStringEncoding = 1,
   NSNEXTSTEPStringEncoding = 2,
   NSJapaneseEUCStringEncoding = 3,
   NSUTF8StringEncoding = 4,
   NSISOLatin1StringEncoding = 5,
   NSSymbolStringEncoding = 6,
   NSNonLossyASCIIStringEncoding = 7,
   NSShiftJISStringEncoding = 8,
   NSISOLatin2StringEncoding = 9,
   NSUnicodeStringEncoding = 10,
   NSWindowsCP1251StringEncoding = 11,
   NSWindowsCP1252StringEncoding = 12,
   NSWindowsCP1253StringEncoding = 13,
   NSWindowsCP1254StringEncoding = 14,
   NSWindowsCP1250StringEncoding = 15,
   NSISO2022JPStringEncoding = 21,
   NSMacOSRomanStringEncoding = 30,
   NSUTF16StringEncoding = NSUnicodeStringEncoding,
   NSUTF16BigEndianStringEncoding = 0x90000100,
   NSUTF16LittleEndianStringEncoding = 0x94000100,
   NSUTF32StringEncoding = 0x8c000100,
   NSUTF32BigEndianStringEncoding = 0x98000100,
   NSUTF32LittleEndianStringEncoding = 0x9c000100,
   NSProprietaryStringEncoding = 65536
};

Ios相关问答推荐

如何加密字符串使用AES. GCM在Dart和解密相同的Swift?

在flatter_riverpod中,如果没有ref对象,我们如何访问提供程序?

ITMS-90432:将应用上传到应用store 时出现问题

使用按位|带有布尔操作数

更新 flutter 和 xcode 后 Xcode 14.3 中缺少文件 (libarclite_iphoneos.a)

Flutter Aging Person 自定义小部件

Flutter 构建 ios 失败:运行 pod 安装时出错

如何使用 AppIntents 在 SwiftUI 应用程序中打开特定视图

Xcode 不支持 iOS 15.6

swiftUI中的剪辑形状无法使用旋转效果

通过隐藏和显示视图在 iMessage 应用程序中使用不同的视图

如何 comments .plist 文件中的行?

在原生和 phonegap 之间挣扎,简单的应用需求

在 Swift 中禁用向后滑动手势

如何将自己项目中的类导入 Playground

应用程序不包含正确的测试版权利

Storyboard Segue 从视图控制器到自身

使用 swift 从应用程序委托打开视图控制器

文件是为存档而构建的,它不是被链接的体系 struct (i386)

Flutter:如何创建一个新项目