将类y中类x的编程实例化链接到类x的视图控制器

时间:2012-12-06 22:49:08

标签: objective-c ios

我有类ComposeHaiku,每个都连接到IB中的视图控制器。 Haiku中的Composeghhaiku实例化为Haikuself.arrayOfHaiku有一个数组,Compose,有117个成员。但在self.ghhaiku.arrayOfHaiku中,Haiku没有成员。

我认为问题在于我没有将具有117个成员数组的Haiku实例与Compose中创建的Haiku.m实例相关联。但是我该怎么做?

(我当然可能完全错了,问题可能是别的,但这看起来很直观。)

有什么想法吗?

修改

-(void)viewDidLoad { [super viewDidLoad]; [self.arrayOfHaiku addObjectsFromArray:userH]; NSLog(@"%d",self.arrayOfHaiku.count); //This logs 117. [self goToNextHaiku]; } 包含以下代码:

Compose.h

@property (strong, nonatomic) Haiku *ghhaiku;包含第Compose.m

@synthesize ghhaiku; - (void)viewDidLoad { [super viewDidLoad]; //Lots of other code NSLog(@"%d",self.ghhaiku.arrayOfHaiku.count); //this logs 0. } 包含以下代码:

{{1}}

2 个答案:

答案 0 :(得分:1)

好的,你永远不会初始化ghaiku,只是定义它。另外为什么ha句有一个viewDidLoad方法?基本上你需要做类似的事情:

 self.ghhaiku = [[Haiku alloc] initWithData:SOME_ARRAY];

在你的Compose.m

只是一个假设,如果Haiku只是一个模型类,你不应该将它用作view / viewcontroller。就像一个NSObject。然后就做:

-(id)initWithData:(NSArray*)data{
self = [super init];
if(self){
    self.arrayOfHaiku = data;
}
return self;
}

请记住在Haiku.h

中定义方法
-(id)initWithData:(NSArray*)data;

先阅读 好吧,我原本误解了你在做什么,但我认为你仍然应该制作一个Haikus单身人士课程(我会更新上面的代码,以便稍后当我有更多时间 - 或者你可以谷歌时),然后调用{每个视图控制器中都有{1}}。

答案 1 :(得分:1)

你可以试试这个......

    //haiku.h

    //haiku.m
    -(NSArray *)initHaikuMembers
    {
        return([[NSArray alloc] initWithObjects.....]);
    }


    //compose.h

    //compose.m
    haiku *ghaiku = [[haiku alloc] init];
    NSArray *myHaikuArray = [ghaiku initHaikuMembers];

通过这种方式,您可以在Compose中多次实例化Haiku类,并在需要时随意初始化它们。如果你需要操作myHaikuArray中的数据,你可以允许Haiku类完成所有的工作。