Saturday, August 11, 2012

Using NSMutableString

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]];

No comments:

Post a Comment