我有一个具有属性的Person的人物是地址,年龄。当我检查的属性,我在屏幕上打印地址与:似乎null NSString的长度是6?
NSLog(@"Add: %@, length: %i", person.address, [person.address length]);
结果是:地址:无,长度:6
你能不能给我解释为什么字符串为空,但它的长度显示作为6?
谢谢。
我有一个具有属性的Person的人物是地址,年龄。当我检查的属性,我在屏幕上打印地址与:似乎null NSString的长度是6?
NSLog(@"Add: %@, length: %i", person.address, [person.address length]);
结果是:地址:无,长度:6
你能不能给我解释为什么字符串为空,但它的长度显示作为6?
谢谢。
地址是什么类型? NSString我假设?使用%d或%lu作为长度(如果使用%lu,则转换为无符号长整型)而不是%i - 应该给出正确的结果。
Length给出了一个NSUInteger作为结果,正确的字符串格式说明符因此是%lu,尽管%d也应该起作用(考虑到它,我总是使用%d)。我从来没有为%I ...
NSLog(@"%lu", (unsigned long)string.length)
看的格式规定:
你可能寻找的答案是:你使用了错误的字符串格式说明。我不确定%i
是什么; %d
是整数和%u
未签名,所以你需要:
NSLog(@"Add: %@, lenght: %u", person.address, [person.address length]);
但是...长度可能不返回你认为它是。
如果person.address
为nil
,然后将消息发送给length
它不会返回长度(什么是“无中生有”?长度)。碰巧,客观C运行时will return zero所以你的例子“工作”,但可以说是不正确的。
您可能以某种方式在字段中获取了“(null)”的字符串值,该字符串长度为6个字符。
这是不可能的......你可以记录%@,人,并告诉我输出? – 2012-07-30 08:20:23