持久存在于iPhone核心数据中

时间:2010-03-10 16:16:24

标签: iphone core-data

我正在尝试使用核心数据将持久数据(NSManagedObjects)的系列写入sqlite,然后将该系列读入应用程序。我在单个会话期间设法编写并读取单个记录,但每次重新加载应用程序时都不会加载以前的数据(并且sqlite管理器识别表但不识别表中的任何条目) 。

这里有一些核心数据逻辑:

在applicationDidFinishLaunching中:我设置3个控制器的managedObjectContext属性

inputControl.managedObjectContext = context; 
reportControl.managedObjectContext = context; 
logControl.managedObjectContext = context;  

然后在inputControl中添加 Event NSManagedObjects,例如

[event setDateCreated:[NSDate date]]; 

并在logControl中读取事件日志

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 


NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]; 
 [request setEntity:entity]; 

 NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"dateCreated" ascending:YES]; 
 NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
 [request setSortDescriptors:sortDescriptors]; 
 [sortDescriptors release]; 
 [sortDescriptor release]; 

 NSError *error; 
 NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 
 if (mutableFetchResults == nil) { 
  NSLog(@"Error fetching from DB");
 } 
 int i;
 NSLog(@"size of DB: %d",mutableFetchResults.count);
 for (i=0; i<mutableFetchResults.count; i++)
  NSLog(@"event %d: %@",i,[mutableFetchResults objectAtIndex:i]);

 [mutableFetchResults release]; 
 [request release]; 

当我运行此代码时,我看到“DB的大小:”始终设置为“1”。 managedObjectModel,managedObjectContext和persistentStoreCoordinator正在以标准方式处理。

非常感谢任何帮助

谢谢

Peyman的

3 个答案:

答案 0 :(得分:3)

您是否正在保存您的managedObjectContext?

NSError *error = nil;
if (![context save:&error]) {
    // Handle the error
}

您可以获取已放入上下文中的对象,但除非将上下文保存到持久性存储中,否则下次无法使用它们。

答案 1 :(得分:0)

您拨打save的电话在哪里?您是否有可能不会冲到NSPersistentStoreCoordinator?

答案 2 :(得分:0)

我发现了问题。上下文没有保存(我没有处理错误)因为在保存之前没有设置强制属性(错误1520)。

谢谢大家的帮助

Peyman的