0

[str replaceOccurrencesOfString: withString: options: range:

[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:'

ここでstrは、NSMutableStringタイプです。私はそのタイプをチェックして、なぜそれが変わるのかわからないよう[str class]に変換しますか?NSCFString私もそれをに変換しようとしますNSMutableStringが、変換しません。私は他の方法で何度もそれを試していますが、他のすべての場所でうまく機能しています。私の1つのView Controllerでのみ、これが表示されます。

私が間違っているのはどこだと思いますか?

4

1 に答える 1

1

不変をデータベースから可変文字列に変換する方法を示していません。行うだけNSMutableString *mstr = str;では不十分です。を使用する必要がありますNSMutableString *mstr = [NSMutableString stringWithString:str];

返される文字列は不変であるため、[NSString stringByReplacingOccurrencesOfString:withString:]可変文字列を操作する代わりに使用を検討することをお勧めします。

于 2012-04-12T08:11:12.000 に答える