1

I'm trying to add my UIImage from web service to my NSMutableArray using this code:

for (int i=0; i<[totalRowCountString intValue]; i++)
{    
    NSString *criticsRatingString = [[JSON valueForKeyPath:@"movies.ratings.critics_rating"] componentsJoinedByString:@" "];
    NSLog(@"criticsRatingString: %@", criticsRatingString);

    if ([criticsRatingString isEqualToString:@"Certified Fresh"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_certified_fresh.png"];
    }
    else if ([criticsRatingString isEqualToString:@"Fresh"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_fresh.png"];
    }
    else if ([criticsRatingString isEqualToString:@"Rotten"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_rotten.png"];
    }
    else if ([criticsRatingString isEqualToString:@"Spilled"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_spilled.png"];
    }
    else if ([criticsRatingString isEqualToString:@"Upright"])
    {
        self.ratingImage = [UIImage imageNamed:@"rt_upright.png"];
    }

    [tomatorRatingImages addObject:self.ratingImage];
    NSLog(@"tomatoRatingImages: %@", tomatorRatingImages);
}

But my NSLog for tomatoRatingImages returns NULL. Any ideas why it returns NULL?

UPDATE: my NSMutableArray is already initialized in my viewWillAppear method.

4 Answers 4

3

You must initialize the array before adding objects to it.

NSMutableArray *tomatorRatingImages = [[NSMutableArray alloc] init];
Sign up to request clarification or add additional context in comments.

1 Comment

Never mind. I found the answer. There was just a typo error somewhere in my viewWillAppear and I didn't initialized it properly. Thanks endy for pointing it out.
2
NSMutableArray * tomatorRatingImages =[[NSMutableArray alloc]init];

[tomatorRatingImages  addObject:[UIImage imageNamed:@"rt_spilled.png"]];

[tomatorRatingImages  addObject:[UIImage imageNamed:@"rt_spilled1.png"]];

[tomatorRatingImages  addObject:[UIImage imageNamed:@"rt_spilled2.png"]];

you can enter multiple image in NSMutableArray.

Comments

1

If you have a property for the NSMutableArray instance, it's better to write getter to initialize it. It takes care of initializing the variable only ones also it gets loaded only when it's required.

   -(NSMutableArray *) tomatorRatingImages {
         if(_tomatorRatingImages == nil) {
               _tomatorRatingImages = [NSMutableArray alloc] init];
         }
         return _tomatorRatingImages;
    }

Comments

0

Initialize like this

NSMutableArray * tomatorRatingImages =[[NSMutableArray alloc]initWithCapacity:3];

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.