tags:

views:

22

answers:

1

Hello all,

Trying to split what the user writes in the text field, into an array full of the characters in the things he typed.

here is what I have so far

-(IBAction) generateFlashNow:(id)sender{

[textField resignFirstResponder];
NSString *string1 = textField.text;
NSString *string2 = [string1 stringByReplacingOccurrencesOfString:@"" withString:@","];
NSArray *arrayOfLetters = [string2 componentsSeparatedByString:@","];

NSLog(@"Log Array :%@", arrayOfLetters);

//NSArray *imageArray = [[NSArray alloc] init];

NSLog(@"Log First Letter of array: %@",[arrayOfLetters objectAtIndex:0]);

}

What am i doing wrong? Any ideas or feedback, as usual, greatly appreciated.

A: 

stringByReplacingOccurrencesOfString is not doing anything when you pass an empty string "" so string2 is an identical copy of string1, hence no commas and the split operation fails.

There are many ways to get this done. I can think of two:

Convert to a character array:

NSString *string = @"Hello";
const char *characters = [string UTF8String];
for(int i=0; i<sizeof(characters); i++) {
    NSLog(@"%c", characters[i]);
}

Or, if you only want to deal with objects, loop through each method and hand-create the array:

NSString *string = @"Hello";
NSMutableArray *array = [[NSMutableArray alloc] init];
for(int i = 0; i < [string length]; i++) {
    NSString *myChar = [NSString stringWithFormat:@"%c", [string characterAtIndex:i]];
    [array addObject:myChar];
}

You could add the above logic to a method like toArray as a category in NSString itself, so all strings get this functionality if that's a common case for your application. Checkout this article for more information about categories. You'd simply call [someString toArray] to get it's array representation.

Anurag
that second one works like a treat. cheers. Anurag.
Sam Jarman