0

オブジェクトのプロパティを設定しようとしていますが、nullのままです。理由を教えてもらえますか?

宣言:

@property (nonatomic, strong) ListItem *listItem

コードは次のとおりです。

NSLog(@"Selected: %@", [self.fetchedResultsController objectAtIndexPath:indexPath]);
[listItem setCategory:[self.fetchedResultsController objectAtIndexPath:indexPath]];
NSLog(@"set %@", listItem);

および出力:

2012-06-28 14:47:43.037 MarketList[10508:fb03] Selected: <Category: 0xb72a9e0> (entity: Category; id: 0xb7252e0 <x-coredata://F9BFC1DF-1D80-477E-9BC6-3C0949AD922F/Category/p2> ; data: {
listItem = "<relationship fault: 0x6d29930 'listItem'>";
name = "Teste 2";})
2012-06-28 14:47:43.038 MarketList[10508:fb03] set (null)
4

4 に答える 4

1
  1. プロパティ宣言にセミコロンがありません(ただし、これは単なるタイプミスであると想定しています)。

  2. ListItemを実際に初期化したことはありますか?(つまりlistItem = [[ListItem alloc] init]; 、そうでない場合、それへのポインターはnilになり、まさにこの動作を引き起こします(nilポインターを使用した呼び出しは無視されます)。

于 2012-06-28T18:28:17.890 に答える
1

変数は、ListItemのインスタンスではなく、をlistItem保持します。nil実際にListItemのインスタンスを指すことはないためnil、メソッドの最後にあります。にメッセージを送信しnilても、オブジェクトが魔法のように出現してメッセージを受信することはありません。メッセージをnil黙って飲み込むだけです。最初にListItemを作成してから、そのプロパティを設定する必要があります。

于 2012-06-28T18:38:17.653 に答える
0
NSLog(@"Selected: %@", [self.fetchedResultsController objectAtIndexPath:indexPath]);
listItem = [self.fetchedResultsController objectAtIndexPath:indexPath];
[listItem setCategory:[self.fetchedResultsController objectAtIndexPath:indexPath]];
NSLog(@"set %@", listItem);
于 2012-06-28T18:42:39.953 に答える
0

使用する前にオブジェクトを割り当てるだけです。viewDidLoadで割り当てます。

于 2013-12-26T13:17:13.563 に答える