iPhone addObject从另一个ViewController使用IBAction到NSMutableArray

时间:2011-02-02 20:29:20

标签: iphone nsmutablearray

一旦用户点击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];
}

2 个答案:

答案 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];
}