0

IB のビュー コントローラーに接続された クラスComposeとクラスがあります。としてインスタンス化されます。 には、 117 個のメンバーを持つ配列 があります。しかし では、にはメンバがありません。HaikuHaikuComposeghhaikuHaikuself.arrayOfHaikuComposeself.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.
}
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 に答える