h0bn0b
h0bn0b

Reputation: 35

NSMutable addObject problem

Noob here getting stuck and probably doing something stupid and would appreciate some guidance.

I've declared an NSMutableArray (resultArray) in my .h file, set the @property and @synthesize in the .m file.

In the initWithNibName i'm doing the alloc and init for the array:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
        // Custom initialization
        resultArray = [[NSMutableArray alloc] init];
    }
    return self;
}

And in one of my methods i'm trying to do an addObject within a for loop, but whatever i try the array does not appear to contain objects (either by using objectAtIndex or count):

for (int i=[resultNumber length]; i>0; i--) {   
    NSString *theNumberRes = [NSString stringWithFormat:@"%c",[resultNumber characterAtIndex:i-1]]; 
    [resultArray addObject:theNumberRes];
}

NSLog(@"array count: %i", [resultArray count]);

I can step through the code and see the code running through the loop as many times as expected, but the NSLog never gives a result other than 0 (and hovering over the resultArray shows 0 objects at all times. (In brief, each object in the array is supposed to be a character from a string in reverse - e.g. if resultNumber is 12345, the array should store 5,4,3,2,1).

I have seen a number of other questions asking similar questions but they either don't seem to help or i don't understand the answer and didn't want to hijack someone else's question with my question.

Please could someone advise me as to how to get this working?

Upvotes: 0

Views: 236

Answers (2)

Ariel
Ariel

Reputation: 2440

The question is if the - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil method get called. There is other initialization routines such as

-(id)init; 
-(id)initWithCoder:(NSCoder)aDecoder;

If your view is loading from a .xib file there is a possibility, that the last one is called and not the one you are initializing your array in.

Upvotes: 1

Kal
Kal

Reputation: 24910

The %c is what is messing you up. Look here

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1

That is for 8-bit unsigned characters. If your string contains utf-8 characters, then this will not work. You could maybe use %C or you should use NSString initWithBytes:length:encoding

Upvotes: 0

Related Questions