0

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

我认为问题在于我没有将Haiku具有 117 个成员数组的实例与Haikucreated in的实例链接起来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.
}
4

2 回答 2

1

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

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

在您的 Compose.m 中

仅供参考,如果Haiku只是一个模型类,则不应将其用作视图/视图控制器。就像一个 NSObject。然后做:

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

只要记住在你的Haiku.h

-(id)initWithData:(NSArray*)data;

首先阅读这篇 文章好吧,我最初误解了你在做什么,但我认为你仍然应该制作一个Haikus单例类(我会更新上面的代码以反映稍后当我有更多时间时 - 或者你可以谷歌)然后只需调用[Haikus sharedInstance].arrayOfHaikus每个你的视图控制器。

于 2012-12-06T23:29:12.540 回答
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 类完成所有工作。

于 2012-12-06T23:36:19.333 回答