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