2012-07-31 89 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造成的。