concert
プロパティを のサブクラスに設定する UIButton サブクラスがありますNSManagedObject
。このプロパティを設定すると、NSManagedObject
が null ではなく、そのプロパティが null ではないことを確認できます。また、オブジェクトのデータは正しいデータを示しています。
concert
ボタンがクリックされて としてメソッドに送信されたときに後でを使用する場合、を のサブクラスにsender
キャストし、 のプロパティはnull を返しますが、それ自体は null ではありません。また、データは になります。sender
UIButton
concert
concert
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
null になります。
- (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];