【问题标题】:Why is my NSString causing NSLog to display only a portion of the string?为什么我的 NSString 导致 NSLog 只显示字符串的一部分?
【发布时间】:2012-08-02 19:25:08
【问题描述】:

假设我试图打印出这样的字符串:

NSLog(@"*** DOWNLOAD START ***\n%@\n*** DOWNLOAD END ***", bufString);

bufString 是一个 NSString。 bufString 包含什么会导致输出在其第一个字符后被截断?我的猜测是它与将换行表示转换为字符串终止字符有关。

从该语句的日志中完整读出:

2012-08-02 12:20:02.595 MyApp[18863:710f] *** DOWNLOAD START ***
{

[bufString length] 的结果是 15914。它试图显示的数据是多行 JSON。

我该怎么做才能打印出整个字符串?

【问题讨论】:

  • 你看过下一行了吗?
  • 看这个问题;您也许可以从中获得解决方案。 stackoverflow.com/q/3581532/1487063
  • 您可以通过将NSString转换为C字符串(转换为ASCII可能无害)来调查内容,循环检查并打印每个字节的代码。你会看看是否有任何奇怪的 control-char 值。
  • 嗯,当我迭代时,似乎每第四个字符实际上是一个字符......
  • 我想我正在从看起来应该是字符字节数组的东西创建 NSString,但实际上每四个字符宽度元素中有三个为零。这可能是有人对数组初始化做了一些技巧(我无法控制)的结果。我可能会结束这个问题,因为我认为它非常特定于我的环境。

标签: objective-c


【解决方案1】:

在我的例子中,我从字节创建了 NSString,但只有每四个字节包含字符信息。底线——如果你从字节创建一个 NSString 确保你知道那个内存中有什么!一次遍历 NSString 字符并打印结果(由 coverback 建议)揭示了问题。

【讨论】:

    猜你喜欢
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多