Empty NSMutableArray , not sure why

放肆的年华 提交于 2019-12-29 08:28:08

问题


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!


回答1:


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




回答2:


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.




回答3:


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




回答4:


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
}


来源:https://stackoverflow.com/questions/11632308/empty-nsmutablearray-not-sure-why

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!