如何正确分配从一个View Controller传递到另一个View Controller的对象?

时间:2013-01-09 08:16:38

标签: ios objective-c

我是一名新的Obj C程序员,请耐心等待。我的数据结构如下:

  

帐单包含收据和数组。收据包含一个数组   receiptItems。 ReceiptItems包含一个名为itemName的字符串。

我将在一个视图控制器中创建的Receipt类型的自定义对象传递给另一个视图控制器。我是通过自定义init方法这样做的。代码如下:

- (id)initWithReceipt:(Receipt *)currentReceipt
{
    self = [super initWithNibName:@"SplitCheckViewController" bundle:nil];
    if (self) {
        ReceiptItem *temp1 = (ReceiptItem *)[currentReceipt.receiptItemsArray objectAtIndex:0];
        NSLog(temp1.itemName);
        currentBill.originalReceipt = currentReceipt;
        ReceiptItem *temp2 = (ReceiptItem *)[self.currentBill.originalReceipt.receiptItemsArray objectAtIndex:0];
        NSLog(temp2.itemName);
    }
    return self;
} 

currentReceipt正在传递并包含每个第一个NSLog输出的相应数据。但是,一旦我尝试将此对象分配给此视图控制器(currentBill.originalReceipt)中的属性,我将获得第二个NSLog的空白输出。我确信这是基本的,但我很困惑。

2 个答案:

答案 0 :(得分:0)

您是否忘记分配currentBill。尝试在第一个NSLog之后打印currentBill。

答案 1 :(得分:0)

从标题中,您希望将对象从第一个视图控制器传递到第二个视图控制器。有很多方法可以做到这一点。

  1. 在第一个视图控制器中使用单例类设置值,并在第二个视图控制器中检索该值。
  2. 使用钥匙串,sqllite,核心数据,plist或您可以存储的任何方式存储值。
  3. 最常用的是初始化第二个视图控制器时,为第二个视图控制器的属性赋值,然后显示第二个视图控制器

    • 如果想要从第一个视图控制器中的第二个视图控制器获取值,那么通常使用的是delegate。
  4. 我相信还有其他方法可以做到。

相关问题