Sunday, June 2, 2013

NSMutableString insertString example in Objective C (iOS).

NSMutableString insertString

Inserts into the receiver the characters of a given string at a given location.

- (void)insertString:(NSString *)aString atIndex:(NSUInteger)anIndex

The string to insert into the receiver. aString must not be nil.
The location at which aString is inserted. The location must not exceed the bounds of the receiver.
Important: Raises an NSRangeException if anIndex lies beyond the end of the string.

Discussion of [NSMutableString insertString]
The new characters begin at anIndex and the existing characters from anIndex to the end are shifted by the length of aString.

This method treats the length of the string as a valid index value that returns an empty string.

NSMutableString insertString example.
NSString *s = @"abcdefghijklmnop";
NSMutableString *mu = [NSMutableString stringWithString:s];
[mu insertString:@"  ||  " atIndex:5];
//  This is one option
s = [mu copy];
//[(id)s insertString:@"er" atIndex:7]; This will crash your app because s is not mutable
//  This is an other option
s = [NSString stringWithString:mu];
//  The Following code is not good
s = mu;
[mu replaceCharactersInRange:NSMakeRange(0, [mu length]) withString:@"Changed string!!!"];
NSLog(@" s == %@ : while mu == %@ ", s, mu); 
//  ----> Not good because the output is the following line
// s == Changed string!!! : while mu == Changed string!!! 

Example of [NSMutableString insertString].
You need a mutable string, not a NSString.

NSMutableString *str = [NSMutableString stringWithString:old_string];
[str insertString:@"-" atIndex:8];
[str insertString:@"-" atIndex:4];

NSMutableString insertString example.
NSMutableString * mutable = [NSMutableString stringWithString:@"05-8-2012"];
[mutable insertString:@"0" atIndex:3];
NSLog(@"my day is:%@",mutable);

End of NSMutableString insertString example article.