Mutable vs. Immutable Strings

NSMutableString – Should be used when you are physically changing the value of an existing string, without completely discarding the old value (i.e. adding a character to the beginning or end, modifying a character in the middle etc).

NSString – Can never be changed after it has been created, only overwritten with a completly new string.  Most NSStrings (including @”Constant Strings”) are autoreleased.  NStrings occupy a fixed number of bytes in memory and are the most efficient.

NSLocalizedString – Return a localized version of a string

 

General

NSMutableString is a subclass of NSString. So any method which can take an NSString can also take an NSMutableString.

Create A NSMutableString

Examples:


	NSMutableString *MyStringName;
	MyStringName = [[NSMutableString alloc] init];

	//Remember to release
	[MyStringName release];

Set NSMutableString Value


    NSMutableString *MyStringName = [NSMutableString stringWithFormat:@"some text"];
    //or
    [MyStringName setString:@"new text"];    //Actually set the string value

    //BEWARE OF THIS!!
    MyStringName = SomeOtherNSMutableString;
    //This sets the pointer to another string object  - don't use it!!  This is a classic cause of bugs where you think you are writing text values but actually you are just updating the pointer, made worse by this not having requried "alloc] init]" to have been used causing unexplainable null value errors when you do decide to use setString!

Append To String


	[MyStringName setString:@"abcd"];
	[MyStringName appendString:SomeOtherStringName];

Does NSMutableString Equal


    //Test for is equal
    if ([MyStringName isEqualToString:@"SomeText"])

    //Test for NOT equal
    if (![OriginalMediaFileName isEqualToString:@""])

Convert Strings


	myString = [myString lowercaseString];
	myString = [myString capitalizedString];



Add Variable to String


    [TempString setString:[NSString stringWithFormat:@"%d days ago ", days]];