【发布时间】:2011-02-14 22:49:42
【问题描述】:
我在模型中添加了一个新实体,它可以正常加载,但内存中的任何更改都不会保存到磁盘。我在汽车对象上设置的值在内存中工作正常,但在点击主页按钮(在模拟器中)时不会持久保存到磁盘。我在我的应用程序中的另一个实体上使用几乎完全相同的代码,并且它的值可以很好地保存到磁盘(核心数据-> sqlite3);有人知道我在这里俯瞰什么吗? Car 是托管对象,汽车对象的 NSMutableArray 中的汽车,Car 是实体,Visible 是我要设置的实体的属性。 谢谢你的帮助。 斯科特
- (void)viewDidLoad {
myAppDelegate* appDelegate = (myAppDelegate*)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext* managedObjectContex = appDelegate.managedObjectContext;
NSFetchRequest* request = [[NSFetchRequest alloc] init];
NSEntityDescription* entity = [NSEntityDescription entityForName:@"Car" inManagedObjectContext:managedObjectContex];
[request setEntity:entity];
NSSortDescriptor* sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES];
NSArray* sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
NSError* error = nil;
cars = [[managedObjectContex executeFetchRequest:request error:&error] mutableCopy];
if (cars == nil) {
NSLog(@"Can't load the Cars data! Error: %@, %@", error, [error userInfo]);
}
[request release];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath {
Car* car = [cars objectAtIndex:indexPath.row];
if (car.Visible == [NSNumber numberWithBool:YES]) {
car.Visible = [NSNumber numberWithBool:NO];
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
}
else {
car.Visible = [NSNumber numberWithBool:YES];
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
}
}
这是我的持久存储协调器选项:
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary* options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES],
NSInferMappingModelAutomaticallyOption, nil];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
}
【问题讨论】: