РЕДАКТИРОВАТЬ, // ПРИЧИНА НЕ СОХРАНЕНИЯ>
поэтому я добавил nslog в свой saveData (пожалуйста, проверьте код ниже), после сохранения отредактированных и сохраненных новых данных,
для отредактированных, отлично
но за новое ,, я получаю>
Error The operation couldn’t be completed. (Cocoa error 256.)
** Второе редактирование>
если я редактирую и сохраняю первый раз, он прекрасно сохраняет отредактированные данные, но показывает ошибку 256 для новых данных,
но если я пытаюсь сохранить отредактированные данные после ошибки 256 (пытаясь сохранить новые данные), то при сохранении отредактированные данные показывают ошибку 256 и не сохраняются !!!!
Я импортирую некоторый sqlitedb (тот же, что генерирует coredata, но с некоторыми предварительно заполненными таблицами)
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator_ != nil) {
return persistentStoreCoordinator_;
}
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"ChildCare_v02.sqlite"];
NSString *storePath = [[NSBundle mainBundle] pathForResource:@"ChildCare_v02" ofType:@"sqlite"];
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"ChildCare_v02.sqlite"]; //este es el que sirve!!! CREE ESTE
NSLog(@"store URL %@", storeURL);
// Put down default db if it doesn't already exist
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:writableDBPath]) {
NSLog(@"proceda aqui");
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"ChildCare_v02" ofType:@"sqlite"];
NSLog(@"no existe todavia");
NSLog(@"defalultStorePath %@", defaultStorePath);
if (defaultStorePath) {
[fileManager copyItemAtPath:defaultStorePath toPath:writableDBPath error:NULL];
NSLog(@"storePath= %@", storePath);
}
}
NSError *error = nil;
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator_;
}
он создает новый штраф в базе данных и заполняет его существующими данными, когда я редактирую данные (предварительно заполненные) в приложении, он сохраняет эти данные (проверяется в документе симулятора с помощью диспетчера sqlite и выходит и снова ), но если я создаю новую запись, она отображается в таблице, показывающей данные, но когда я покидаю приложение и возвращаюсь, этой новой созданной записи нет (и, конечно, нет в sqlite new db) .. .
это код, который я использую для сохранения отредактированных или вновь созданных данных,
-(IBAction)saveData
{
if(editFlag==1)
{
NSManagedObjectContext *context = [(ChildCare_v01AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:context];
[request setEntity:entity];
editEmp.namemployee = tfName.text;
editEmp.surname = tfSurname.text;
editEmp.email = tfEmail.text;
//editEmp.phone = tfPhone.text;
editEmp.mobile = tfMobile.text;
editEmp.category=tfCategory.text;
NSLog(@"salvado editado"); //saving FINE!!!!
NSError *error;
if (![context save:&error])
{ NSLog(@"Error %@",[error localizedDescription]); }
//[context release];
[self.navigationController popViewControllerAnimated:TRUE];
}
else{
NSManagedObjectContext *context = [(ChildCare_v01AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
Employee *employee = (Employee*)[NSEntityDescription
insertNewObjectForEntityForName:@"Employee"
inManagedObjectContext:context];
employee.namemployee = tfName.text;
employee.surname = tfSurname.text;
employee.email = tfEmail.text;
//employee.phone=tfPhone.text;
employee.mobile = tfMobile.text;
employee.category=tfCategory.text;
NSLog(@"salvado nuevo"); ///HERE THE ERROR!! COCOA ERROR 256!!!!
NSError *error;
if (![context save:&error]) {
NSLog(@"Error %@",[error localizedDescription]);
// handle error
} else {
NSLog(@"Done");
}
[self.navigationController popViewControllerAnimated:TRUE];
}
}
- так можно ли сохранить вновь созданные данные ?? почему не работает? почему только сохраняет изменения? и никаких новых данных? Пожалуйста, помогите мне достичь этого, большое спасибо!