我想檢查字符串的長度,但是當代碼執行並且命中IF
語句時,我得到unrecognized selector
。爲什麼長度不適用於NSString?
字典中的價值是一個字符串。
NSString * checkString = [myDictionary objectForKey:@"somekey"];
NSLog(@"length: %lu", (unsigned long)[checkString length]);
if([checkString length] > 0){
}
ERROR從控制檯:
長度:0
[__NSCFNumber長度]:無法識別的選擇發送到實例
爲了簡單:
NSString * checkString = @"my string"; //[myDictionary objectForKey:@"somekey"];
NSLog(@"length: %lu", (unsigned long)[checkString length]);
if([checkString length] > 0){
}
長度:9
[__NSCFNumber長度]:無法識別的選擇發送到 實例
爲什麼呢?
嘗試施放[myDictionary objectForKey:@「somekey」]來的NSString或使用字符串在withFormat –
根據到錯誤,它是一個'NSNumber'而不是'NSString'這不是因爲你把它作爲'NSString'轉換成它是'NSString'。但奇怪的是,它正確地記錄了「長度:%lu」,所以問題就在它之後,導致崩潰的代碼是什麼?如果你做'[[myDictionary objectForKey:@「somekey」] isKindOfClass:[NSString class]]返回TRUE? – Larme
如果那是你真實的代碼,那麼這個輸出就沒有意義了。這實際上是你正在運行的真正的代碼複製粘貼到你的問題?你確定NSLog和if語句都指向同一個變量? – dan