一旦用户点击Add to Favorites按钮,我试图将addObject添加到NSMutableArray中我可以将数据导入NSDictionary,但是当我将NSDictionary传递给Array时,NSLog会返回nil。我错过了什么吗?
-(IBAction) addtofavorites: (id)sender
{
NSArray *key = [NSArray arrayWithObjects:@"Title", @"Description", nil];
NSArray *objects = [NSArray arrayWithObjects:CurrentTitle, description.text, nil];
NSDictionary *fadd = [[NSDictionary alloc] initWithObjects:objects forKeys:key];
FavoritesViewController *fvc = [[FavoritesViewController alloc] init];
[fvc.favorites addObject:fadd];
[FavoritesViewController release];
}
答案 0 :(得分:0)
FavoritesViewController *fvc = [[FavoritesViewController alloc] init];
[fvc.favorites addObject:fadd];
[FavoritesViewController release];
看起来不正确。你应该已经初始化了一个FavoritesViewController(其中只能访问它并调用-addObject :) ...
修改强>
首先,当前视图控制器(具有-addtofavorites:在其上定义的控制器)如何与FavoritesViewController相关?用户如何在这两个视图控制器之间导航?
其次,收藏夹列表会在应用程序的不同运行中持续存在吗?如果是这样,您打算如何保存/恢复收藏夹?
第三,不是将收藏夹添加到视图控制器,您可能最好将它们添加到用于填充FavoritesViewController的底层“模型”。
将“模型”与“视图”分开可以非常强大,同时还可以简化代码。
答案 1 :(得分:0)
我要做的是在你的头文件中为你保留的FavoritesViewController创建一个实例变量。然后在按下addtofavorites时使用lazy init。像下面的东西
if (!detailViewController)
{
self.fvc = [[FavoritesViewController alloc] init];
}
[self.fvc.favorites addObject:fad];
然后只需在dealloc
中释放FavoritesViewController对象- (void)dealloc {
[fvc release];
[super dealloc];
}