好像null NSString的长度是6?

时间:2012-07-30 07:29:24

标签: objective-c nsstring

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

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

结果是:添加:无,长度:6

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

感谢。

3 个答案:

答案 0 :(得分:1)

你可能会以某种方式在字段中获取字符串值“(null)”,这是6个字符长。

答案 1 :(得分:0)

地址是什么类型的?我认为NSString?使用%d或%lu表示长度(如果使用%lu,则转换为无符号长度)而不是%i - 应该给出正确的结果。

长度给出一个NSUInteger,因此正确的字符串格式说明符将是%lu,尽管%d也应该起作用(考虑它,我总是使用%d)。我从未像我一样......

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

查看格式指定:

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

答案 2 :(得分:0)

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

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

但......长度可能无法恢复你的想象。

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