如何在目标c中访问不同类的数组

时间:2013-04-03 22:33:01

标签: objective-c arrays class

我知道这个问题已经被问了好几次,但是经过广泛的搜索,到目前为止它们都没有对我有用。我想尽可能避免使用单身人士。对不起,如果这被视为重复问题。

我的ViewController.m文件中有一个名为storyList的带有5个对象的MutableArray。我希望能够在我的DetailViewController.m文件中访问这个storyList数组。

我尝试过的一种方法是: (storyListArrayinDetail是detailviewcontroller中的一个新数组,storyList是来自ViewController.h的5个对象的数组) 在ViewController.h中

DetailViewController *controller;

在ViewController.m中

 controller = [[DetailViewController alloc]init];
 controller.storyListArrayinDetail = [[NSMutableArray alloc]init];       
 controller.storyListArrayinDetail = storyList;

当我在ViewController.m中记录controller.storyListArrayinDetail时,我得到了5个对象的正确数组。但是,当我在DetailViewController.m中记录storyListArrayinDetail时,我什么都没得到。

2 个答案:

答案 0 :(得分:0)

尝试覆盖DetailViewController.m上的方法(id)init,并在此处初始化storyListArrayinDetail。 然后,每当初始化DetailViewController时,您也将初始化storyListArrayinDetail。因此,要发送您的storyList,只需使用您的代码:

controller = [[DetailViewController alloc]init];
controller.storyListArrayinDetail = storyList;

希望有所帮助

答案 1 :(得分:0)

您可以在DetailViewController中创建一个新的init方法,并在初始化时传入该数组。

//假设DetailViewController实际上是一个UIViewController,不确定OP中的init方法。

DetailedViewController.h

@interface DetailedViewController : UIViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withDataArray:(NSArray*)dataArray;
@end

DetailedViewController.m

@interface DetailedViewController () {
   NSArray *myDataArray;
}

@end

@implementation DetailedViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withDataArray:(NSArray*)dataArray
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
            myDataArray = [NSArray arrayWithArray:dataArray];
        }
        return self;
    }

...

然后在DetailedViewController中,您可以使用myDataArray。希望有所帮助。

编辑:要包含Hot_Licks建议:

DetailedViewController.h

@interface DetailedViewController : UIViewController
@property(nonatomic, assign)NSArray *myDataArray;
@end

ViewController.m

DetailedViewController *controller = [[DetailViewController alloc]init];
[controller setMyDataArray:xyArray];