だからここに取り引きがあります: 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;
}