所以这是交易:我有一个名为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:andManagedObjectContext:时,参数“f”和“moc”包含实际值。在方法结束时,fieldFormVC具有所需的所有值。
现在它回到第一块代码并调用
fieldFormVC.trackManager = self;
fieldFormVC中的所有值都转到0x00000000。 fieldFormVC的所有属性都是用@property(非原子,保留)设置的,它们也是@ synthesize'd。
奇怪的是我使用了类似的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;
}
答案 0 :(得分:0)
尽管您的方法FieldForm
实际上应该返回getForm
课程,但您正在转向FieldForm
。很可能getForm
方法没有返回正确的对象。