2

I have the following code:

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" is a Typescript string containing "DetErHemmeligt"
  2. Line 2 prints out "DetErHemmeligt"
  3. Line 4 always prints out "<44657445 7248656d 6d656c69 6774>"
  4. Line 5 works as well
  5. Line 6 crashes with no error logging, and I have tried many things here like "initWithBytesLengthEncoding", but it just keeps crashing for me and I can not figure out why.

Any ideas?

Sam Hanley
  • 4,707
  • 7
  • 35
  • 63
Neigaard
  • 3,726
  • 9
  • 49
  • 85

1 Answers1

0

It seems to me that you are writing objective-c code through NativeScript here which would translate to:

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

The problem with this is that your object has already been initialized. The new call in objective-c is actually shorthand for alloc followed by init.

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

Since you can't init an object twice, your app crashes. Instead, try using alloc.

NSString.alloc().initWithDataEncoding(nsData, NSUTF8StringEncoding);
Ian MacDonald
  • 13,472
  • 2
  • 30
  • 51