【问题标题】:Objective-C Convert NSData to NSStringObjective-C 将 NSData 转换为 NSString
【发布时间】:2012-10-06 01:47:38
【问题描述】:

这是我尝试将 NSData 转换为 NSString 的代码,但程序返回“程序收到的信号:SIGABRT”。

NSString *string= [NSString stringWithUTF8String:[data bytes]];

或

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

还有其他更好的方法吗?

【问题讨论】:

  • 如果它不是 nil,它实际上是否包含 UTF-8 编码的字符串字节? NSData 对象是如何创建的?
  • @rmaddy 虽然这会导致未定义的字符串结果(几乎可以肯定只是返回 nil),但不会导致该行出现 SIGABRT。
  • 数据不为零。 NSData 变量中有数据。

标签: iphone objective-c ios nsstring nsdata


【解决方案1】:

Here's a highly up-voted answer 展示了如何做到这一点。简而言之:

NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

第一个想法似乎失败了,因为发送了[data bytes]。 stringWithUTF8String 没有为 void * 做好准备。第二个想法看起来应该可行,即使输入为零。

【讨论】:

    【解决方案2】:

    使用此代码

    NSString* myString;
    myString = [[NSString alloc] initWithData:nsdata encoding:NSASCIIStringEncoding];
    

    另请参阅本教程..

    http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html

    :)

    【讨论】:

      【解决方案3】:

      Swift-3

      让字符串 = data.base64EncodedString()

      【讨论】:

      • 在你急于做一个“哦,很快......”评论,你可能想阅读 OP 的实际问题
      猜你喜欢
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      相关资源
      最近更新 更多