将字符串转换为 NSData 并将 NSData 转换回字符串

Converting string to NSData and NSData back to string

我有以下代码:

const content: NSString = NSString.stringWithString(data);
console.log("content#1: " + content);
const nsData: NSData = content.dataUsingEncoding(NSUTF8StringEncoding);
console.log("nsData#1: " + nsData);
console.log("nsData#2: " + nsData.base64EncodedStringWithOptions(null));
NSString.new().initWithDataEncoding(nsData, NSUTF8StringEncoding)
  1. "data" 是包含 "DetErHemmeligt"
  2. 的 Typescript 字符串
  3. 第 2 行打印出 "DetErHemmeligt"
  4. 第 4 行总是打印出“<44657445 7248656d 6d656c69 6774>”
  5. 第 5 行也有效
  6. 第 6 行崩溃,没有错误记录,我在这里尝试了很多东西,比如 "initWithBytesLengthEncoding",但它一直在崩溃,我不明白为什么。

有什么想法吗?

在我看来,您正在通过此处的 NativeScript 编写 objective-c 代码,这将转换为:

[[NSString new] initWithData:nsData encoding:NSUTF8StringEncoding];

问题在于您的对象已经初始化。 objective-c 中的 new 调用实际上是 shorthand for alloc followed by init.

[[[NSString alloc] init] initWithData:nsData encoding:NSUTF8StringEncoding];

由于您不能 init 一个对象两次,您的应用程序崩溃了。相反,请尝试使用 alloc.

NSString.alloc().initWithDataEncoding(nsData, NSUTF8StringEncoding);