2013-11-25 47 views
0

我用下面的方法插入對象插入到核心數據將數據添加到核心數據,但得到無回

-(void)createRecordWithTitle:(NSString *)title finishDate:(NSDate *)finishDate limitCount:(int)limitCount { 
    [self fetchRecordsIfNecessary] ; 
    Record *record = [NSEntityDescription insertNewObjectForEntityForName:@"Record" inManagedObjectContext:self.context] ; 
    record.createdDate = [NSDate date] ; 
    record.title = title ; 
    record.finishDate = finishDate; 
    record.limitCount = limitCount ; 
    [self.allRecords addObject:record] ; 
    [self fetchRecordsIfNecessary] ; 
    for (Record *r in self.allRecords) { 
     NSLog(@"-->title:%@",r.title) ; 
    } 
} 

並採用跟蹤方法來獲取數據從核心數據回。

-(void) fetchRecordsIfNecessary { 
    if (!self.allRecords) { 
     NSFetchRequest *request = [[NSFetchRequest alloc] init] ; 
     NSEntityDescription *entity = [NSEntityDescription entityForName:@"Record" inManagedObjectContext:self.context] ; 
     [request setEntity:entity] ; 
     NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"createdDate" ascending:NO] ; 
     [request setSortDescriptors:@[sortDescriptor] ] ; 

     NSError *error ; 
     NSArray *result = [self.context executeFetchRequest:request error:&error] ; 
     // if errors encountered , result is nil , otherwise , it's an valid array 
     //context will tack result's changes , and will be saved after you call context's save method 
     if (!result) { 
      [NSException raise:@"Fetch failed" format:@"%@" , [error localizedDescription]] ; 
     } 
     self.allRecords = [[NSMutableArray alloc] initWithArray:result] ; 
    } 
} 

我正確設置NSManagedContext,成功添加數據,但是獲取所有零數據。誰能幫我?提前致謝。

+0

你怎麼知道你是成功添加數據?你是否已經在調試器中逐步瞭解了實際情況? – Abizern

+0

我發現上下文的插入對象爲0後,我添加一個對象到上下文中,但是當我重新查詢上下文,仍然有 上下文中的數據,但是零。我不知道爲什麼。 – Weizhi

回答

0

您不保存上下文!

[self.context save:&error];

你需要做以下:

-(void)createRecordWithTitle:(NSString *)title finishDate:(NSDate *)finishDate limitCount:(int)limitCount { 
    [self fetchRecordsIfNecessary] ; 
    Record *record = [NSEntityDescription insertNewObjectForEntityForName:@"Record" inManagedObjectContext:self.context] ; 
    record.createdDate = [NSDate date] ; 
    record.title = title ; 
    record.finishDate = finishDate; 
    record.limitCount = limitCount ; 
    [self.allRecords addObject:record] ; 
    NSError *error; 
    if (![self.context save:&error]) { 
     NSLog(@"Failed to save - error: %@", [error localizedDescription]); 
    } 
    [self fetchRecordsIfNecessary]; 
} 
+0

我沒有將上下文保存在createRecordWithTitle中,但我在此方法之後保存了 上下文。 – Weizhi

+0

我確實嘗試在這種方法中保存上下文,但無法工作 – Weizhi

+0

然後,您在保存數據之前調用'[self fetchRecordsIfNecessary];'因爲您將方法保存在方法之後。 – null

0

我通過調用NSFetchRequest的setReturnsObjectsAsFaults解決了這個錯誤:沒有一種方法

相關問題