Не удалось сохранить в хранилище данных: операция не может быть выполнена. (Ошибка какао 133020.)

Я работаю над довольно сложным приложением с огромной процедурой синхронизации beetwen iphone и веб-сервера. У меня нет проблем с добавлением записей, пока я не запустил процедуру синхронизации в потоке separete, и он обновит данные по serwer и отправит их обратно на iphone. Но после этой процедуры вставка новых данных вызывает ошибку, например:

2011-01-07 12:49:10.722 App[1987:207] Failed to save to data store: The operation couldn't be completed. (Cocoa error 133020.) 2011-01-07 12:49:10.724 App[1987:207] { conflictList = ( "NSMergeConflict (0x5ac1ea0) for NSManagedObject (0x5a2d710) with objectID '0x5a27080 <x-coredata://E82E75ED-96DB-4CBF-9D15-9CC106AC0052/uzytkownicy/p10>' with oldVersion = 9 and newVersion = 21 and old object snapshot = {\n adres = \"<null>\";\n haslo = xxxxxxxxxxxxxxxxxxxxxx;\n \"id_uzytkownika\" = 3;\n imie = Jan;\n \"kod_jednorazowy\" = 0;\n komorka = \"<null>\";\n login = nowakjan;\n nazwisko = Nowak;\n pesel = 0;\n rodzaj = 2;\n \"stan_konta\" = 0;\n telefon = \"<null>\";\n \"uzytkownicy_uczniowie\" = \"<null>\";\n \"zmienna_losowa\" = 8G9e1;\n} and new cached row = {\n adres = \"<null>\";\n haslo = xxxxxxxxxxxxxxxxxxxxxx;\n \"id_uzytkownika\" = 3;\n imie = Jan;\n \"kod_jednorazowy\" = 0;\n komorka = \"<null>\";\n login = nowakjan;\n nazwisko = Nowak;\n pesel = 0;\n rodzaj = 2;\n \"stan_konta\" = 0;\n telefon = \"<null>\";\n \"uzytkownicy_uczniowie\" = \"<null>\";\n \"zmienna_losowa\" = 8G9e1;\n}", "NSMergeConflict (0xd266990) for NSManagedObject (0xcd05950) with objectID '0x5a453b0 <x-coredata://E82E75ED-96DB-4CBF-9D15-9CC106AC0052/uczniowie/p125>' with oldVersion = 5 and newVersion = 10 and old object snapshot = {\n adres = \"Warszawa; ul. Lwowska 32\";\n \"data_urodzenia\" = \"1997-02-01 23:00:00 +0000\";\n dysfunkcje = \"\";\n email = \"<null>\";\n frekwencja = 0;\n \"id_ucznia\" = 86;\n imie2 = Marian;\n \"imie_ucznia\" = \"S\\U0142awomir\";\n klasa = \"0x5a47820 <x-coredata://E82E75ED-96DB-4CBF-9D15-9CC106AC0052/zespoly/p9>\";\n komorka = \"<null>\";\n \"miejsce_urodzenia\" = Warszawa;\n \"nazwisko_ucznia\" = \"S\\U0142awek\";\n \"numer_ewidencyjny\" = 20;\n opiekun1 = \"Mariusz S\\U0142awek\";\n opiekun2 = \" \";\n pesel = 97020298919;\n plec = 1;\n telefon = 890000002;\n \"uzytkownicy_uczniowie\" = \"<null>\";\n \"web_klasa\" = 50;\n} and new cached row = {\n adres = \"Warszawa; ul. Lwowska 32\";\n \"data_urodzenia\" = \"1997-02-01 23:00:00 +0000\";\n dysfunkcje = \"\";\n email = \"<null>\";\n frekwencja = 0;\n \"id_ucznia\" = 86;\n imie2 = Marian;\n \"imie_ucznia\" = \"S\\U0142awomir\";\n klasa = \"0x5a8e7c0 <x-coredata://E82E75ED-96DB-4CBF-9D15-9CC106AC0052/zespoly/p9>\";\n komorka = \"<null>\";\n \"miejsce_urodzenia\" = Warszawa;\n \"nazwisko_ucznia\" = \"S\\U0142awek\";\n \"numer_ewidencyjny\" = 20;\n opiekun1 = \"Mariusz S\\U0142awek\";\n opiekun2 = \" \";\n pesel = 97020298919;\n plec = 1;\n telefon = 890000002;\n \"uzytkownicy_uczniowie\" = \"<null>\";\n \"web_klasa\" = 50;\n}", "NSMergeConflict (0xd2669b0) for NSManagedObject (0x5a44480) with objectID '0x5a47830 <x-coredata://E82E75ED-96DB-4CBF-9D15-9CC106AC0052/przedmioty/p12>' with oldVersion = 7 and newVersion = 15 and old object snapshot = {\n \"id_przedmiotu\" = 1;\n \"nazwa_przedmiotu\" = Historia;\n \"skrot_nazwy\" = Hist;\n} and new cached row = {\n \"id_przedmiotu\" = 1;\n \"nazwa_przedmiotu\" = Historia;\n \"skrot_nazwy\" = Hist;\n}" ); } 

Я искал любое решение, но не повезло.

Заранее благодарю за любую полезную помощь.


  oceny_ucznia *nowaOcenka = (oceny_ucznia *)[NSEntityDescription insertNewObjectForEntityForName:@"oceny_ucznia" inManagedObjectContext:[Factory getVar:@"context"]]; nowaOcenka.przedmiot = (przedmioty *) [Factory getVar:@"cPrzedmiot"]; nowaOcenka.web_przedmiot = [NSNumber numberWithInt:[((przedmioty *)[Factory getVar:@"cPrzedmiot"]).id_przedmiotu intValue]]; nowaOcenka.nauczyciel = (uzytkownicy *)[Factory getVar:@"cNauczyciel"]; nowaOcenka.web_nauczyciel = [NSNumber numberWithInt:[((uzytkownicy *)[Factory getVar:@"cNauczyciel"]).id_uzytkownika intValue]]; nowaOcenka.lekcja = (lekcje *)[Factory getVar:@"cLekcja"]; nowaOcenka.uczen = uczeniek; nowaOcenka.web_uczen = [NSNumber numberWithInt:[uczeniek.id_ucznia intValue]]; nowaOcenka.czas_wpisania = [NSDate date]; if ( grupka != nil ) { nowaOcenka.grupa = grupka; nowaOcenka.web_grupa = [NSNumber numberWithInt:[grupka.id_grupy_ocen intValue]]; nowaOcenka.kolumna = [NSNumber numberWithInt:([kolumienka intValue]+1)]; nowaOcenka.grupa.czas_wpisania = [NSDate date]; } else { int wartoscOceny = [[Factory getVar:@"cSemestr"] intValue]; wartoscOceny += ( [kolumienka intValue]==0 ) ? 2 : 0; nowaOcenka.koncowa = [NSNumber numberWithInt:wartoscOceny]; } nowaOcenka.wartosc = [NSNumber numberWithFloat:[[((slownik_ocen *)[self.slownikOcen objectAtIndex:[ocena selectedRowInComponent:0]]) wartosc_liczbowa] floatValue]]; nowaOcenka.ocena = [NSString stringWithFormat:@"%@",[((slownik_ocen *)[self.slownikOcen objectAtIndex:[ocena selectedRowInComponent:0]]) ocena_opis]]; nowaOcenka.semestr = [NSNumber numberWithInt:[[Factory getVar:@"cSemestr"] intValue]]; ((lekcje *)[Factory getVar:@"cLekcja"]).czas_wpisania = [NSDate date]; NSError* error; if(![[Factory getVar:@"context"] save:&error]) { NSLog(@"Failed to save to data store: %@", [error localizedDescription]); NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey]; if(detailedErrors != nil && [detailedErrors count] > 0) { for(NSError* detailedError in detailedErrors) { NSLog(@" DetailedError: %@", [detailedError userInfo]); } } else { NSLog(@" %@", [error userInfo]); } } 

Здесь описывается класс Factory, но, вероятно, существует проблема с контекстом, который не обновляется точно после процедуры синхронизации.

One Solution collect form web for “Не удалось сохранить в хранилище данных: операция не может быть выполнена. (Ошибка какао 133020.)”

В соответствии с:

http://developer.apple.com/library/ios/#documentation/cocoa/Reference/CoreDataFramework/Miscellaneous/CoreData_Constants/Reference/reference.html

эта ошибка является NSManagedObjectMergeError :

Код ошибки означает, что политика слияния не выполнена. Основные данные не могут завершить слияние.

Объект NSError может помочь в декодировании этой ошибки. Можете ли вы опубликовать код, который вы используете, чтобы вставить новые данные?

  • Как правильно ориентировать изображение, созданное с помощью AVCaptureVideoDataOutputSampleBufferDelegate
  • Как создать iPad xib-файл в конкретном проекте iPhone
  • Как создать UITextView, который точно соответствует клавиатуре?
  • iBeacons выдает при мониторинге 2 или более регионов
  • Как ссылаться на каждую UILabel в приложении
  • iOS - обновить таблицу UITableView правильно?
  • Цель c - Показывать буферизацию при воспроизведении звука с удаленного сервера
  • как выбрать файлы документов (pdf или doc) для загрузки
  • iOS создает «скопировать пасту», как popover (UIMenuController) в UITableView
  • Безопасный способ сохранения ключей шифрования в iOS
  • viewDidAppear не получает вызов
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.