2013-10-02 12 views
40

Dzień dobry.Dziwne nowe błędy iOS 7: odbiornik od DB/ForceShrinkPersistentStore_NoLock

Mam projekt, który wykorzystuje wiele połączeń sieciowych z SSL. Projekt ten działa dobrze i bez błędów na iOS 5 i 6. Ale z nowym iOS 7 ciśgle te dwa błędy:

ERROR: unable to get the receiver data from the DB 

ForceShrinkPersistentStore_NoLock -delete- We do not have a BLOB or TEXT column type. Instead, we have 5. 

nie są one połączone w żaden sposób i ja wciąż otrzymuję pierwszy przez kilka tygodni, później też mam ten drugi.

Są one odbierane przy starcie aplikacji, w tym momencie wysyłam kilka HTTP POST i przetwarzam odebrane dane. Nie mogę złapać skąd pochodzą te błędy.

Mogę je znaleźć, jeśli mogę je zrozumieć. Czy ktoś wie, co mają na myśli lub w jakich przypadkach można je spowodować?

+0

należy dodać, że błędy te nie budzą żadnych wyjątków i w żaden sposób nie zakłócaj funkcjonalności aplikacji. – avuthless

+0

Czy Twoja aplikacja używa CoreData? Zmienili niektóre opcje, których używają z pamięcią masową sqlite w systemie iOS 7, które brzmią, jakby mogły być powiązane (znajdę link do wideo WWDC, o którym wspomniano, jeśli potwierdzisz, że korzystasz z CD) – RyanR

+0

Nie, nie jestem CD, ale chciałbym ten link, dzięki! – avuthless

Odpowiedz

31

Miałem również pierwszy z problemami właśnie dzisiaj:

ERROR: unable to get the receiver data from the DB 

nie wiem powód (może jakoś cache dostał uszkodzony), ale usuwając wszystkie folderze Aplikacje symulatora wykonany problem iść dla mnie daleko.

rm -rf ~/Library/Application Support/iPhone Simulator/7.0-64/Applications/* 
+0

Cóż, w poniedziałek rano oba błędy zniknęły (nikt w ogóle nie dotknął kodu). Zatem te "błędy duchów" wciąż pozostają tajemnicą. iOS 7 nadal generuje błąd "BLOB TEXT", ale nie tak często. Urządzenia i symulatory iOS 5 + 6 pozostają ciche. Przyjmuję tę odpowiedź, ponieważ nie ma już problemu, mimo że sam się rozwiązał. Dziękuję za Twoje wsparcie. – avuthless

+0

Proste czyszczenie będzie działało również w większości przypadków – whyoz

+5

Usunięcie wszystkich aplikacji z symulatora zadziałało także dla mnie – Swati

3

Mam ten sam problem, ale jest to podczas debugowania na urządzeniu z systemem iOS (iPhone 4 iOS 7.0.4)

Nie wiem, co jest tego przyczyną ... Ale starałem usuwając aplikację na urządzeniu i ponowne uruchamianie, a następnie błąd zniknął.

3

Ten błąd zazwyczaj występuje w systemie iOS7, a powodem może być problemy z pamięcią podręczną. Naprawiłem problem przez usunięcie folderu symulatora.

Kroki:

prawym przyciskiem myszy na „Finder” oknie wybierz „Idź do folderu”

Wklej „Wsparcie ~/Library/Application/iPhone Simulator /”

Otworzy się folder iPhone Simulator zawierający symulatory użyte do wykonania.

Teraz, usunąć folder 7.x. dane

enter image description here

0

Usuwanie pochodzące rozwiązać to dla mnie.

Okno> Organizator> Projekty

Wybierz swój projekt, uderzył obok usunąć dane pochodzące.

1

Ja też stanąłem przed podobnym problemem ..

Łącznie powyższej sugestii ja również ignorowane cache w moim wątku życzenie

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; 

i problem nie pojawił się dla mnie ...

+0

Mam kilka postów JSON do mojego serwisu. Problem występuje tylko w przypadku, gdy odzyskuje się> 40 KB danych. Zmiana wartości parametru cachePolicy na NSURLRequestReloadIgnoringCacheData spowodowała, że ​​problem zniknął. – JSWilson

1

Łatwiej było naprawić dla mnie:

Po prostu Usunięto aplikację z symulatora (jak z telefonu - nie ma potrzeby, aby usunąć niektóre foldery) naprawiono problem.

3

Mam dzisiaj ten sam problem. W moim przypadku komunikat o błędzie ERROR: unable to get the receiver data from the DB nie został rozwiązany przez aplikację czyszczącą z symulatora/urządzenia. Po uruchomieniu aplikacji przez chwilę błąd został zgłoszony ponownie. Ponadto był on rejestrowany za każdym razem, gdy wykonywałam wywołania [NSURLSession dataTaskWithRequest:...].

Znaleziono powiązanie z buforowaniem odpowiedzi. Ustawianie politykę ignorować lokalnej pamięci podręcznej wyeliminowana rejestrowanie błędzie:

NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; 
defaultConfigObject.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData; 

NSURLSession *session = [NSURLSession sessionWithConfiguration: defaultConfigObject 
                  delegate: nil 
                delegateQueue: [NSOperationQueue mainQueue]]; 

NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:urlRequest completionHandler:completion]; 
[dataTask resume]; 

Uwaga: Sesja musi zostać unieważnione raz nie potrzeba nic więcej, inaczej spowoduje pamięć przeciekać