2010-11-09 10 views
5

Co spowodowałoby błąd wrócić null, to co mammanagedObjectContext Zapisz się niepowodzeniem z błędu jest zerowa

+ (BOOL)saveContext:(NSManagedObjectContext *)context 
    { 
     NSError *error = nil; 
     if (![context save:&error]) 
     { 
     DLog(@"ERROR %@, %@", error, [error userInfo]); 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry" 

                 message:@"Error Saving the Data" 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 

     [alert show]; 
     [alert release]; 

     return NO; 
     } 
    return YES; 
    } 

Powyższa metoda jest metodą klasy, nie jestem pewien, dlaczego błąd nie ma jakakolwiek informacja.

Metoda ta nazywana jest w ten sposób

[HSCoreDataUtility saveContext: self.managedObjectContext];

kiedy modalViewController zamyka się i wraca do kontrolera NavigationController, więc potrzebuję zapisać kontekst, ale przechodzi przez błąd, teraz myślę, że mam pomysł co do przyczyny, że nie jest on zapisany, ale nie powinien. t błąd daje mi wskazówkę? ale dziennik po prostu mówi "ERROR (null) (null)"

wszelkie myśli

+0

Czy jesteś pewien, że 'context' nie jest zerowy? –

+0

tak, jestem pewien. – creativeKoder

Odpowiedz

7

Jedyny sposób, w jaki widzę, że sytuacja się dzieje, to jeśli przechodzisz w kontekście nil. Postawiłbym bombę logiczną na szczycie tej metody klasowej, aby się przed tym uchronić.

Cóż, właściwie nie stworzyłem metody klasy dla tej małej ilości kodu; ale punkt wciąż stoi. Sprawdź kontekst: nil.

+0

kontekst nie jest zerowy, wiem to na pewno – creativeKoder

+0

i jakkolwiek przekazuję kontekst, zaczyna się on w delegacie aplikacji i przekazuję go od tego miejsca, może to mieć z tym coś wspólnego. – creativeKoder

+0

Może być gdzieś wypuszczany lub nie został zatrzymany? Niech wypluje bieżący '[context retainCount]' z kontrolą 'nil'. Nigdy nie boli sprawdzić. –

0

uhm, nie jestem pewien% @ spowoduje błąd iść gadatliwy. [error localizedDescription]?

+0

użyłem obu, [error userInfo] i [error localizedDescription], ten sam błąd rzeczowy (null), (null) – creativeKoder

+0

również to, co jest w próbce kodu jabłka – creativeKoder

8

Żyłem twoim bólem i skończyłem, żyjąc. ;)

Po długim czasie debugowania zrealizowałem w metodzie sprawdzania niestandardowych obiektów, w niektórych przypadkach zwracałem NO i nie inicjowałem błędu.

Jeśli masz ten problem, sprawdź metody sprawdzania poprawności obiektu. To prawdopodobnie był twój problem.

+0

To może nie był problem z oryginalnym plakatem, ale właśnie to mi się przydarzyło. Dzięki! Wygląda na to, że Core Data powinna rzucić wyjątek zamiast zaprzeczać dokumentacji NSManagedObjectContext - powinienem zgłosić błąd. –

+0

To zasługuje na 10 * up * głosów. To oszczędziłoby mi godzin ciągnięcia za włosy, jestem tego pewien! Zgadzam się, to prawdopodobnie nie jest oryginalny problem, ale na pewno występuje z dokładnie takimi samymi objawami. –

+0

O mój Boże! Spędziłem wiele godzin, żeby to zrozumieć. Dzięki! –

0

zdarzyło mi się spotkać ten problem, i po długim czasie debugowania Znalazłem to dlatego duplikatu deklaracji NSError * błąd, może miałeś inny NSError * błąd w zakresie zewnętrznym, jak:

NSError* error = nil; 

// some code 

if (!error) 
{ 
    NSError* error = nil; 

    // your code 
} 

Następnie błąd będzie zerowy, chociaż w rzeczywistości jest wyjątek.

1

To jest naprawdę stary wątek, ale mam nadzieję, że moja odpowiedź pomoże komuś, kto znajdzie to w Google, tak jak ja. Wystąpiłem z tym samym problemem i żadna z tych odpowiedzi nie była moim problemem; Okazuje się, że popełniłem bardzo zgryźliwy, głupi błąd polegający na tym, że nie usunąłem/ponownie zainstalowałem aplikacji, gdy zmieniłem model danych, więc zapis nie działał bez błędu. Sprawdź, czy nie robisz tego samego! :)

Powiązane problemy