我做這樣的事情:iOS版 - 異常檢查時,如果字符串爲空
// GET THE USER ID
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *user_id = [standardUserDefaults objectForKey:@"user_id"];
然後檢查USER_ID是否爲空
if ([user_id length] == 0) {
proceed = false;
NSLog(@"Error: User id is not set.");
}
我得到這個運行時異常:
*由於未捕獲異常'NSInvalidArgumentException'而終止應用程序,原因: ' - [__ NSCFBoolean length]:無法識別的選擇器發送到實例0x1469f70'
任何想法,爲什麼我得到異常?我不認爲我所做的事情有什麼不妥。
謝謝!
實際上我想獲得實際的user_id值,這是我放在那裏的字符串值。從standardUserDefaults獲取該字符串的正確方法是什麼?謝謝! – GeekedOut 2012-07-26 17:09:47
我們怎麼能這麼肯定'user_id'是NSString的類型的呢?它可能是一個字母數字或數字字符串。 – samfisher 2012-07-26 17:10:25
@GeekedOut如果用戶默認的存儲號碼,您必須存儲的號碼。它不會更改類型。只是爲了確認:'user_id'是真正的局部變量 - 這不只是你張貼的問題是,它使一個快速編輯?嘗試添加'NSLog(@「%@」,[user_id class])或'if([user_id isKindOfClass:[NSNumber class]])NSLog(@「是number」)'來說服自己。 @samfisher引發的異常表明'length'被髮送到的對象的類型是'NSCFBoolean',並且這是'NSNumber'的一個私有子類(後者在實踐中是一個集羣)。 – Tommy 2012-07-26 17:12:19