我有一個具有屬性的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