我正在尝试设置对象的属性,但它仍然为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)
答案 0 :(得分:1)
你的财产声明中缺少一个分号(假设这只是一个错字)。
您是否真的初始化了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中分配它。