2

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

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

结果是:加:nil,长度:6

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

谢谢。

4

3 回答 3

1

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

于 2012-08-19T08:44:45.480 回答
0

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

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

但是......长度可能不会返回您认为的内容。

如果person.addressnil,那么向它发送消息length将不会返回长度(“无”的长度是多少?)。碰巧的是,Objective C 运行时将返回零,因此您的示例“有效”但可以说是不正确的。

于 2012-07-30T07:53:20.757 回答
0

地址是什么类型?NSString 我假设?使用 %d 或 %lu 作为长度(如果使用 %lu,则转换为 unsigned long)而不是 %i - 这应该会给出正确的结果。

结果,长度给出了 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

于 2012-07-30T07:33:19.897 回答