【问题标题】:Seems like null NSString has length 6?似乎 null NSString 的长度为 6?
【发布时间】:2012-07-30 07:29:23
【问题描述】:

我有一个 Person 类的人对象,其属性是地址、年龄。当我检查属性时,我在屏幕上打印地址:

      NSLog(@"Add: %@, length: %i", person.address, [person.address length]);

结果是:加:nil,长度:6

你能解释一下为什么字符串为空,但它的长度显示为 6 吗?

谢谢。

【问题讨论】:

  • 这是不可能的..你能登录 %@, 人并显示输出吗???

标签: objective-c nsstring


【解决方案1】:

您可能以某种方式在字段中获取了“(null)”的字符串值,它有 6 个字符长。

【讨论】:

    【解决方案2】:

    地址是什么类型? NSString 我假设?使用 %d 或 %lu 作为长度(如果使用 %lu,则转换为 unsigned long)而不是 %i - 这应该会给出正确的结果。

    Length 给出了一个 NSUInteger 结果,因此正确的字符串格式说明符将是 %lu 尽管 %d 也应该工作(考虑到它,我总是使用 %d)。我从来没有像 %i...

    NSLog(@"%lu", (unsigned long)string.length)
    

    看格式指定:

    https://developer.apple.com/library/mac/ipad/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

    【讨论】:

      【解决方案3】:

      您可能正在寻找的答案是:您使用了错误的字符串格式说明符。我不确定%i 是什么; %d 用于整数,%u 用于无符号,所以你需要:

      NSLog(@"Add: %@, lenght: %u", person.address, [person.address length]);
      

      但是...长度可能不会返回您认为的值。

      如果person.addressnil,那么向它发送消息length 不会返回长度(“无”的长度是多少?)。碰巧的是,Objective C 运行时 will return zero 所以您的示例“有效”但可以说是不正确的。

      【讨论】:

        猜你喜欢
        • 2017-08-03
        • 2014-03-13
        • 2018-03-07
        • 1970-01-01
        • 1970-01-01
        • 2015-09-17
        • 1970-01-01
        • 2012-02-27
        • 2012-08-06
        相关资源
        最近更新 更多