typescript - 文字列をNSDataに変換し、NSDataを再び文字列に変換する
私は次のコードを持っています:
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" のような多くのことを試しましたが、それでもクラッシュし続け、なぜかわかりません。
何かアイデアはありますか?
回答 #1
あなたはここでNativeScriptを通してObjective-Cのコードを書いているように思われ、それは次のように変換されます:
[[NSString new] initWithData:nsData encoding:NSUTF8StringEncoding];
これの問題は、あなたのオブジェクトがすでに初期化されていることです。Objective-C の new 呼び出しは、実際には alloc の後に init を呼ぶ省略形です。
[[[NSString alloc] init] initWithData:nsData encoding:NSUTF8StringEncoding];
オブジェクトを二度 init できないため、アプリがクラッシュします。代わりに alloc を使ってみてください。
NSString.alloc().initWithDataEncoding(nsData, NSUTF8StringEncoding);
