无法在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
答案 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”];