2013-07-17 135 views
0

我有問題試圖讓我的CoreData保存,我之前使用過CoreData,通常不會遇到這些問題。誰能告訴我什麼是錯用下面的代碼:CodeData not saving

MapEntity *mapEntity = [_fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]; 

NSMutableSet *set = (NSMutableSet *)mapEntity.points; 
[set removeObject:self.selectedPoint]; 

self.selectedPoint = nil; 
[[Singleton sharedSingleton] saveContext]; 

初始化我取結果來控制我使用以下命令:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"MapEntity" inManagedObjectContext:[[Singleton sharedSingleton] managedObjectContext]]; 

所以實體返回絕對應該是在單身manabged對象上下文。對於saveContext的代碼如下:

- (void)saveContext 
{ 
    NSError *error = nil; 
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext; 
    if (managedObjectContext != nil) { 
     if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { 
      NSLog(@"Unable to save context"); 
    } 
    } 
} 

如果我檢查mapEntity.points拆除的對象後,可看到該對象已被刪除。在重新啓動應用程序之前,該對象不會重新出現,因此它必須是持久性問題。任何人都可以弄清楚我的代碼有什麼問題,因爲我完全困惑。

回答

1

我已經設法解決這個問題,似乎在我刪除對象的方式內撒謊。相反,我現在使用由CoreData創建的設置刪除功能,以下代碼用於具有相同問題的任何其他人:

MapEntity *mapEntity = [_fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]; 

    NSSet *removeSet = [NSSet setWithObject:self.selectedPoint]; 
    [mapEntity removePoints:removeSet]; 

    self.selectedPoint = nil; 
    [[Singleton sharedSingleton] saveContext];