我有一个人类对象,人物属性是地址,年龄。当我检查属性时,我在屏幕上打印地址:
NSLog(@"Add: %@, length: %i", person.address, [person.address length]);
结果是:添加:无,长度:6
你能解释一下为什么字符串为null但它的长度显示为6?
感谢。
答案 0 :(得分:1)
你可能会以某种方式在字段中获取字符串值“(null)”,这是6个字符长。
答案 1 :(得分:0)
地址是什么类型的?我认为NSString?使用%d或%lu表示长度(如果使用%lu,则转换为无符号长度)而不是%i - 应该给出正确的结果。
长度给出一个NSUInteger,因此正确的字符串格式说明符将是%lu,尽管%d也应该起作用(考虑它,我总是使用%d)。我从未像我一样......
NSLog(@"%lu", (unsigned long)string.length)
查看格式指定:
答案 2 :(得分:0)
您可能正在寻找的答案是:您使用的是错误的字符串格式说明符。我不确定%i
是什么; %d
用于整数,%u
用于无符号,因此您需要:
NSLog(@"Add: %@, lenght: %u", person.address, [person.address length]);
但......长度可能无法恢复你的想象。
如果person.address
为nil
,则向其发送消息length
将不会返回长度(“无”的长度是多少?)。碰巧,Objective C运行时will return zero所以你的例子“有效”,但可能是不正确的。