1

我是一个新的 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 的空白输出。我确定这是基本的东西,但我很困惑。

4

2 回答 2

0

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

于 2013-01-09T08:34:23.153 回答
0

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

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

    • 如果想在第一个视图控制器中从第二个视图控制器获取值,那么通常使用的是委托。

我相信还有其他方法可以做到这一点。

于 2013-01-09T08:37:29.760 回答