2012-07-30 123 views
2

我有一个具有属性的Person的人物是地址,年龄。当我检查的属性,我在屏幕上打印地址与:似乎null NSString的长度是6?

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

结果是:地址:无,长度:6

你能不能给我解释为什么字符串为空,但它的长度显示作为6?

谢谢。

+0

这是不可能的......你可以记录%@,人,并告诉我输出? – 2012-07-30 08:20:23

回答

0

地址是什么类型? NSString我假设?使用%d或%lu作为长度(如果使用%lu,则转换为无符号长整型)而不是%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

0

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

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

但是...长度可能不返回你认为它是。

如果person.addressnil,然后将消息发送给length它不会返回长度(什么是“无中生有”?长度)。碰巧,客观C运行时will return zero所以你的例子“工作”,但可以说是不正确的。

1

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