1

私は新しい Obj C プログラマーなので、ご容赦ください。私のデータ構造は次のとおりです。

請求書には領収書と配列が含まれています。レシートには、レシート項目の配列が含まれています。ReceiptItems には、itemName という文字列が含まれています。

あるView Controllerで作成されたReceiptタイプのカスタムオブジェクトを別のView Controllerに渡しています。カスタムの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) のプロパティにこのオブジェクトを割り当てようとすると、2 番目の NSLog の出力が空白になります。基本的なことだと思いますが、当惑しています。

4

2 に答える 2

0

currentBill を割り当てるのを忘れましたか。最初の NSLog の後に currentBill を出力してみてください。

于 2013-01-09T08:34:23.153 に答える
0

タイトルから、最初のView Controllerから2番目のView Controllerにオブジェクトを渡したいとします。そうする方法はたくさんあります。

  1. 最初のView Controllerでsingletonクラスの設定値を使用し、2番目のView Controllerで値を取得します。
  2. キーチェーン、sqllite、コアデータ、plist、または保存できる方法を使用して値を保存します。
  3. 最も一般的に使用されるのは、2 番目のビュー コントローラーを初期化し、2 番目のビュー コントローラーのプロパティに値を指定してから、2 番目のビュー コントローラーを表示する場合です。

    • 最初のView Controllerで2番目のView Controllerから値を取得したい場合、一般的に使用されるのはデリゲートです。

他にも方法はあると思います。

于 2013-01-09T08:37:29.760 に答える