我见过的所有使用推的示例都使用[NSData description]获取推令牌以发送到服务器。
但是,使用XCode 11构建应用程序时,其结果不同于使用Xcode 10构建应用程序时,其结果与[NSString stringWithFormat]类似。

例:

NSData* theToken = ...
....
NSString* stringWithFormat = [NSString stringWithFormat"@"%@", theToken];
NSString* description = [theToken description];


使用Xcode 10编译并运行时,两者的结果均为:

@"<44154da7 32345001 53106883 ffc1071f a59c0d24 a70871e5 aa8dbb41>"


但是,使用Xcode 11编译并运行时,结果为:

@"{length =32, bytes = 0x44154da7 32345001 53106883 ffc1071f ... a70871e5 aa8dbb41}"


(如果代码是使用Xcode 10编译然后在iOS 13上运行的,则不会出现后一种结果。)

当使用Xcode 11编译时,如何将NSData转换为NSString,从而得到与XCode10相同的结果,或者如果使用Xcode 10编译,如何从返回结果中仅将字节节提取到NSString中?

最佳答案

简而言之,你不能。

description方法用于调试目的。它返回对象的字符串表示形式,并且不能保证该表示形式在发行版本之间都是稳定的。

如果您需要将NSData编码为某种形式的十六进制字符串以控制格式,则必须手动进行操作。

关于ios - 使用Xcode 11和Xcode 10编译时,NSData描述和NSString stringWithFormat具有不同的返回结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56839860/

10-11 19:47
查看更多