无法在NSmutableArray中添加NSmutableDictionary

时间:2012-01-20 04:56:09

标签: iphone objective-c ios5

无法在NSmutableArray中添加NSmutableDictionary,activitiesFeedArray是一个可变数组,并在头文件中初始化。

            NSMutableDictionary *dummyitem = [[NSMutableDictionary alloc]init];
            NSMutableDictionary *dummyitem2 = [[NSMutableDictionary alloc]init];
            NSMutableDictionary *dummyitem3 = [[NSMutableDictionary alloc]init];

            [dummyitem setObject:@"No Data Found" forKey:@"text"];
            [dummyitem2 setValue:dummyitem forKey:@"Title"];
            [dummyitem3 setObject:dummyitem2 forKey:@"ItemInfo"];

            NSLog(@"%@",dummyitem3);

            //dummyitem3 logs correct value here             

            if ([activitiesFeedArray count] == 0) 
            { 
                NSLog(@"%@",dummyitem3);
                //dummyitem3 logs correct value here
                [activitiesFeedArray addObject:dummyitem3];
                NSLog(@"%@",activitiesFeedArray);
                //activitiesFeedArray logs null value here
            }

Viewdid加载

    (void)viewDidLoad
{
   [super viewDidLoad];
   activitiesFeedArray = [[NSMutableArray alloc]init];
}

标头文件

@interface SearchViewController : UIViewController <UISearchBarDelegate ,UITableViewDelegate , UITableViewDataSource>
{
  NSMutableArray *activitiesFeedArray;
}
@end

3 个答案:

答案 0 :(得分:2)

你没有提到代码的位置,但是它显然在viewDidLoad之前运行了一段时间,所以数组是没有的。

答案 1 :(得分:1)

如果这是你拥有的唯一代码,那么它应该可以正常工作,你的NSMutableArray的NSLog不应该返回nil。我在XCode上复制并粘贴了你的代码,它完美无缺。您必须在代码中的其他位置执行某些操作才能更改NSMutableArray。


如果你很好奇我做了什么来证明你的代码是有效的,我创建了一个简单的UIViewController,里面有一个按钮。然后我创建了一个UIViewController类,并在头文件和实现文件中逐字复制了代码。我在头文件中声明了NSMutableArray并在viewdidload中初始化它(我按原样复制和粘贴它们)。我还将其余的NSMutableDictionary代码放在viewDidLoad中,它产生了明智的结果。 NSMutableArray日志显示它包含正确的数据。

有时候做一个干净的构建会有所帮助,但据我所知,你的代码是正确的,应该有用。

顺便说一句,我有IOS5和XCode 4.2。

答案 2 :(得分:1)

替换[dummyitem2 setValue:dummyitem forKey:@“Title”];与[dummyitem2 setObject:dummyitem forKey:@“Title”];