将字符串转换为 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)
- "data" 是包含 "DetErHemmeligt"
的 Typescript 字符串
- 第 2 行打印出 "DetErHemmeligt"
- 第 4 行总是打印出“<44657445 7248656d 6d656c69 6774>”
- 第 5 行也有效
- 第 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);
我有以下代码:
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)
- "data" 是包含 "DetErHemmeligt" 的 Typescript 字符串
- 第 2 行打印出 "DetErHemmeligt"
- 第 4 行总是打印出“<44657445 7248656d 6d656c69 6774>”
- 第 5 行也有效
- 第 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);