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: 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;
}
4

1 回答 1

0

FieldForm尽管您的方法getForm实际上应该返回一个FieldForm类,但您正在转换。该方法很可能getForm没有返回正确的对象。

于 2012-08-14T17:58:38.367 回答