0

だからここに取り引きがあります: FieldFormVC という名前のカスタム UIViewController があります。それを提示するために、私はこのコードを呼び出します:

FieldFormVC *fieldFormVC = [[FieldFormVC alloc] initWithFieldForm:(FieldForm *)[self getForm] andManagedObjectContext: managedObjectContext];
fieldFormVC.trackManager = self;

fieldFormVC.thisTrackNumber = currentScreenIndex;
fieldFormVC.textSize = textSize;

[navigationController pushViewController:fieldFormVC animated:YES];

[self getForm] は FieldForm オブジェクトを返します。initWithFieldForm: andManagedObjectContext: メソッドのコードは次のとおりです。

-(id)initWithFieldForm: (FieldForm *) f  andManagedObjectContext: (NSManagedObjectContext *) moc
{
    if (self = [super init])
    {
        fieldForm = f;
        managedObjectContext = moc;
    }

    return self;

}

いくつかのブレークポイントを設定し、initWithFieldForm: およびManagedObjectContext: が呼び出されると、パラメーター "f" と "moc" に実際の値が含まれます。メソッドの最後で、fieldFormVC には必要なすべての値が含まれています。

コードの最初のチャンクに戻って呼び出すと、

fieldFormVC.trackManager = self;

fieldFormVC のすべての値は 0x00000000 になります。fieldFormVC のすべてのプロパティは @property (nonatomic、retain) で設定され、@synthesize も行われます。

奇妙なことに、私は似たような initWith.. メソッドを使用したことがありますが、それらはうまくいきましたが、この問題はこれまで見たことがありません。それが役立つ場合、私は自分のプロジェクトで Core Data を使用しており、FieldForm は私のモデルの特定のエンティティです。アドバイスや助けをありがとう!

アップデート:

getForm メソッドのコード:

-(NSObject *) getForm
   {
    WrapperForm *wrapperForm = (WrapperForm *)[[_fetchedResultsController fetchedObjects]objectAtIndex:currentScreenIndex.intValue];

    FieldForm *fieldForm = wrapperForm.fieldForm;
    PictureForm *pictureForm = wrapperForm.pictureForm;


    if (fieldForm != nil)
    {
        NSLog(@"Class: %@", [wrapperForm.fieldForm.class description]);

        return fieldForm;

    }else if(pictureForm != nil)
    {
        NSLog(@"Class: %@", [wrapperForm.pictureForm.class description]);

        return pictureForm;
    }

    return nil;
}
4

1 に答える 1

0

FieldFormメソッドは実際にはクラスをgetForm返す必要がありますが、キャストしています。FieldFormほとんどの場合、getFormメソッドは正しいオブジェクトを返しません。

于 2012-08-14T17:58:38.367 に答える