2012-04-12 88 views
0

[str replaceOccurrencesOfString: withString: options: range:使用replaceOccuranceOfString功能

[str replaceOccurrencesOfString:@"'" withString:@"!~" options:0 range:NSMakeRange(0,str.length)]

時,遇到了一個錯誤,我用這個功能在我NSMutableString,以取代「象徵!〜符號,這樣我可以存儲串入數據庫。它的工作很好,當我把它存儲到數據庫中,但在檢索時,使用相同的函數將其轉換回來,它顯示了我的錯誤。

錯誤 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to mutate immutable object with replaceOccurrencesOfString:withString:options:range:'

這裏,strNSMutableString類型。我檢查了它的類型[str class]它的轉換爲NSCFString不知道它爲什麼會改變?我也嘗試將它轉換爲NSMutableString,但它沒有轉換。我在其他方面嘗試了很多次,但是它在所有其他地方都能正常工作,只有在我的一個視圖控制器中,它才向我展示了這一點。

任何猜測我在哪裏做錯了?

+1

嘗試在使用它之前分配str變量。 – 2012-04-12 06:42:49

+0

@RamaRao,我試過了!它不工作。 – Hemang 2012-04-12 06:47:02

+0

你試過像這樣NSString * str = [[[NSString alloc] init] retain]; – 2012-04-12 06:51:26

回答

1

您不會顯示如何將不可變數據從數據庫轉換爲可變字符串。只是做NSMutableString *mstr = str;是不夠的,你需要使用NSMutableString *mstr = [NSMutableString stringWithString:str];

由於返回的字符串是不可變的,您可能需要考慮使用[NSString stringByReplacingOccurrencesOfString:withString:]而不是使用可變字符串。