jimbob
jimbob

Reputation: 3298

Empty NSMutableArray , not sure why

Ok so I populate the array like this:

NSMutableArray *participants;
for(int i = 0; i < sizeofpm; i++){
        NSDictionary *pmpart_dict = [pm_participants objectAtIndex:i];
        NSString *pmpart_email = [pmpart_dict objectForKey:@"email"];
        NSString *pmpart_email_extra = [@"pm" stringByAppendingString:pmpart_email];
        [participants setValue:pmpart_email forKey:pmpart_email_extra];
        NSLog(@"%@", participants);
    } 

sizeofpm is 1. that is using count. to get the number of values in the array. How can i store values to that array? It doesnt seem to be working. Thanks!

Upvotes: 0

Views: 165

Answers (4)

Patrick Perini
Patrick Perini

Reputation: 22633

So, I as some of the other answer have stated, you're missing your initializer for participants. However, judging by your use of setValue:forKey:, and how you appear to be structuring your data, you're not looking for NSMutableArray, but instead NSMutableDictionary. Arrays are simply lists, whereas dictionaries maintain key-value relationships, which you appear to be attempting to leverage.

Try this:

// some classes provide shorthand for `alloc/init`, such as `dictionary`
NSMutableDictionary *participants = [NSMutableDictionary dictionary];
for(int i = 0; i < sizeofpm; i++){
    NSDictionary *pmpart_dict = [pm_participants objectAtIndex:i];
    NSString *pmpart_email = [pmpart_dict objectForKey:@"email"];
    NSString *pmpart_email_extra = [@"pm" stringByAppendingString:pmpart_email];
    [participants setValue:pmpart_email forKey:pmpart_email_extra];
    NSLog(@"%@", participants);
} 

This will give you a dictionary in the form of

{
    pmpart_email_extra: pmpart_email
}

Upvotes: 0

Silver Gonzales
Silver Gonzales

Reputation: 734

You are assigning a value to an NSMutableArray *participants like how you assign values to an NSDictionary object. To assign values to NSMutableArray you can call - (void)addObject:(id)anObject

Upvotes: 1

pre
pre

Reputation: 3506

you need to alloc it first. Try to change the first line to:

NSMutableArray* participants = [[NSMutableArray alloc] init];

also using setValue:forKey: wont work with an NSMutableArray as an array has no key.

Try using [participants addObject:pmpart_email];.

Upvotes: 2

jrturton
jrturton

Reputation: 119242

You don't create the array, you just declare it.

NSMutableArray *participants = [NSMutableArray array];

After that, setValue:forKey: will not add objects to an array. You need addObject::

[participants addObject:pmpart_email];

There is no key.

Upvotes: 2

Related Questions