2011-01-07 15 views
6

Büyük senkronizasyon prosedürü beetwen iphone ve web sunucusu ile oldukça karmaşık bir uygulama üzerinde çalışıyorum. Ben separete iş parçacığı senkronizasyon prosedürünü çalıştırana kadar kayıtları ekleyerek herhangi bir sıkıntı yok ve bu sunucuda verileri günceller ve iphone'a geri gönderir. Ama bu işlemden sonra, ekleme yeni veriler bu gibi, hataya neden: Ben herhangi bir çözüm için ancak şans olmadan arıyordumVeri deposuna kaydedilemedi: İşlem tamamlanamadı. (Cocoa error 133020.)

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}" 
    ); 
} 

.

Herhangi bir yararlı yardım için şimdiden teşekkür ederiz.


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]); 
     } 
} 

Fabrika sınıfı here tarif edilmiştir, ancak probablly senkron işlemden sonra doğru yenilenmez bir çerçevesi ile bir sorun vardır. göre

+1

NSUndoManager kullanıyor musunuz? Kullanıldığı iş parçacığında bir NSManagedObjectContext OLMASI gerektiğini unutmayın. – Felix

+0

UndoManager kullanmıyorum ve init bağlamı hakkında doğru iş parçacığıyla ilgili gerçeği fark ediyorum. –

cevap

3

:

Hata kodu bir birleştirme politika başarısız Çekirdekli Veri tam bir kaynaşma edemeyeceğini göstermek için:

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

o hata NSManagedObjectMergeError olduğunu.

NSError nesnesi, bu hatanın kodunu çözmede yardımcı olabilir. Yeni verileri eklemek için kullandığınız kodu gönderir misiniz?

+0

Yukarıda bir cevap olarak gönderdim :) –

+0

Sorunuzda ilk olarak NSLog'un sonucunu yayınladığınız hata nedir? –

+0

Evet, aldığım tam bir hata. –

İlgili konular