2012-07-30 42 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個字符。