2012-07-31 99 views
1

我有一個UIButton子類,其中我將屬性concert設置爲子類NSManagedObject。當我設置此屬性時,我確信NSManagedObject不爲空,並且它的屬性不爲null。此外,對象的數據顯示正確的數據。NSManagedObject屬性爲空

當使用concert後來被點擊併發送至方法sender按鈕時,我會投的sender我的UIButton子類和concert的屬性現在將返回null但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屬性現在爲空。

- (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. 
} 

UPDATE:

如果我取NSManagedObject再次使用objectId,我將獲得的數據和屬性將不會返回null。我不明白爲什麼這是必要的。誰能告訴我?

以下將工作。

NFConcert *concert = ((NFConcertButton *) sender).concert; 
concert = (NFConcert *) [managedObjectContext existingObjectWithID:concert.objectID error:nil]; 
+0

你能否發表有關財產音樂會宣言的代碼? – 2012-07-31 17:56:59

+0

@luyuan我的房產被宣佈爲'@property(nonatomic,strong)NFConcert * concert'' – simonbs 2012-07-31 18:36:59

+0

和@synthesize? – 2012-07-31 18:39:56

回答

1

使用蘋果默認實現的核心數據堆棧,我不再有這個問題。 我相信這個問題是由我曾經與Core Data棧一起工作的DataManager造成的。