清空NSMutableArray,不知道为什么

时间:2012-07-24 13:49:15

标签: iphone xcode nsmutablearray

好的,我这样填充数组:

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是1.正在使用count。获取数组中的值的数量。如何将值存储到该数组?它似乎没有工作。谢谢!

4 个答案:

答案 0 :(得分:2)

您不创建数组,只需声明它即可。

NSMutableArray *participants = [NSMutableArray array];

之后,setValue:forKey:将不会向数组添加对象。您需要addObject:

[participants addObject:pmpart_email];

没有钥匙。

答案 1 :(得分:2)

你需要先分配它。尝试将第一行更改为:

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

同样使用setValue:forKey:无法使用NSMutableArray,因为数组没有键。

尝试使用[participants addObject:pmpart_email];

答案 2 :(得分:1)

您正在为NSMutableArray *participants分配值,就像为NSDictionary对象分配值一样。要将值分配给NSMutableArray,您可以拨打- (void)addObject:(id)anObject

答案 3 :(得分:0)

因此,正如其他一些答案所述,您错过了participants的初始值设定项。但是,根据您对setValue:forKey:的使用以及您构建数据的方式判断,您并不是在寻找NSMutableArray,而是在寻找NSMutableDictionary。数组只是列表,而字典维护键值关系,您似乎试图利用这些关系。

试试这个:

// 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);
} 

这将为您提供

形式的字典
{
    pmpart_email_extra: pmpart_email
}