0

我正在尝试设置对象的属性,但它仍然为空。谁能告诉我为什么?

宣言:

@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包含nil,而不是 ListItem 的实例。你从来没有真正将它指向一个 ListItem 的实例,所以它仍然nil在你的方法的末尾。发送消息nil不会导致对象神奇地出现以接收消息 -nil只是默默地吞下它。您必须先创建您的 ListItem,然后再设置它的属性。

于 2012-06-28T18:38:17.653 回答
0

在使用它之前分配对象。在 viewDidLoad 中分配它。

于 2013-12-26T13:17:13.563 回答
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 回答