2011-11-25 28 views
0

這是什麼錯誤?我使用可變類型,但它仍然不工作!嘗試變更不可變對象的錯誤

錯誤是:

終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,理由是: '改變一個不可改變的 對象與deleteCharactersInRange:'

NSMutableString *line= [NSMutableString stringWithString:@"here is the string"]; 
[line deleteCharactersInRange: NSMakeRange(1,9)]; 

回答

0

我的新的答案:

有了新的代碼,我加在最後一個額外的行:

NSMutableString *line= [NSMutableString stringWithString:@"here is the string"]; 
[line deleteCharactersInRange: NSMakeRange(1,9)]; 
NSLog(@"line is %@", line); 

和控制檯輸出爲:

2011-11-25 06:08:13.248 TestingCommandLine[13324:903] line is he string 

沒有拋出異常。看起來它在爲我工作!

我原來的答覆(你原來的問題):

你不能從無關,在這一條線(因此除外)刪除字符。

這兩行代碼之間是否有其他代碼?如果沒有,你有一個有效的NSMutableString ...沒有任何內容。你不能從一個沒有任何內容的可變字符串中刪除任何東西。

+0

代碼已修改!在這種情況下檢查PLZ。 –

+0

您的修改代碼適用於我。它還不適合你嗎? –

0

如果你的代碼看起來和你在這裏引用的完全一樣,那麼問題是你試圖從空字符串中刪除某些東西。但是因爲沒有什麼東西可以被刪除,所以這是一個錯誤。

0

異常名稱已清除:「無效的參數」。你所做的就是創建一個空的可變字符串,然後試圖刪除超出限制範圍1到9範圍內的字符。這個功能對超出範圍是不寬容的:它引發一個異常。 爲什麼你寫評論「行有價值!」?你是否在你發佈的兩行代碼之間生成它?

相關問題