我有一个UIButton子类,我在其中将属性concert
设置为NSManagedObject
的子类。当我设置此属性时,我确信NSManagedObject
不为null,并且它的属性不为null。此外,对象的数据显示正确的数据。
稍后在点击按钮时使用concert
并将其作为sender
发送给方法时,我会将sender
强制转换为UIButton
的子类和属性concert
现在将返回null,但concert
本身不为null。此外,数据将为fault
。
有谁知道为什么会发生这种情况以及如何解决这个问题?
在这里,我初始化我的按钮:
NFConcertButton *button = [NFConcertButton buttonWithConcert:concert tileSize:self.tileSize];
在initWithButton:tileSize:
(由静态方法调用)中,我存储音乐会供以后使用。
- (id)initWithConcert:(NFConcert *)concert tileSize:(CGSize)tileSize
{
if (self = [super init])
{
// Store concert
_concert = concert;
/*
<NFConcert: 0xde67eb0> (entity: Concert; id: 0xde63f60 <x-coredata://F027F762-2F30-4A43-898B-42ECC199DE97/Concert/p2> ; data: {
band = "SomeBand";
})
*/
// concert is not null
// concert.band is not null
// .... //
}
return self;
}
按下按钮时,将调用以下方法,concert
的属性现在为空。
- (void)concertButtonPressed:(id)sender
{
NFConcert *concert = ((NFConcertButton *) sender).concert;
// <NFConcert: 0xde67eb0> (entity: Concert; id: 0xde63f60 <x-coredata://F027F762-2F30-4A43-898B-42ECC199DE97/Concert/p2> ; data: <fault>) => (null)
// concert is not null.
// concert.band is now null.
}
更新
如果我使用NSManagedObject
再次获取objectId
,我将获取数据,并且属性不会返回null。我不明白为什么这是必要的。有谁能告诉我?
以下内容可行。
NFConcert *concert = ((NFConcertButton *) sender).concert;
concert = (NFConcert *) [managedObjectContext existingObjectWithID:concert.objectID error:nil];