设置后对象保持为空

时间:2012-06-28 18:12:43

标签: iphone objective-c ios

我正在尝试设置对象的属性,但它仍然为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 个答案:

答案 0 :(得分:1)

  1. 你的财产声明中缺少一个分号(假设这只是一个错字)。

  2. 您是否真的初始化了ListItem? (即listItem = [[ListItem alloc] init]; 如果不这样做,指向它的指针将为nil,并且会导致这种行为(仅使用nil指针调用)。

答案 1 :(得分:1)

您的变量listItem包含nil,而不是ListItem的实例。您实际上从未将其指向ListItem的实例,因此在方法结束时它仍然是nil。向nil发送消息不会导致对象神奇地存在以接收消息 - nil只是默默地吞下它。您必须先创建ListItem,然后然后设置其属性。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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