1

concertプロパティを のサブクラスに設定する UIButton サブクラスがありますNSManagedObject。このプロパティを設定すると、NSManagedObjectが null ではなく、そのプロパティが null ではないことを確認できます。また、オブジェクトのデータは正しいデータを示しています。

concertボタンがクリックされて としてメソッドに送信されたときに後でを使用する場合、を のサブクラスにsenderキャストし、 のプロパティはnull を返しますが、それ自体は null ではありません。また、データは になります。senderUIButtonconcertconcertfault

なぜこれが起こるのか、どうすれば修正できるのか誰か知っていますか?

ここで、ボタンを初期化します。

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;
}

ボタンが押されると、以下のメソッドが呼び出され、のプロパティがconcertnull になります。

- (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];
4

1 に答える 1

1

Core Data スタックの Apple のデフォルト実装を使用すると、この問題はなくなりました。この問題はDataManager、Core Data スタックで作業していたことが原因であると考えています。

于 2012-08-01T19:21:23.620 に答える