Странные новые ошибки iOS 7: приемник от DB/ForceShrinkPersistentStore_NoLock
Добрый день.
У меня есть проект, который использует множество сетевых подключений с SSL. Этот проект работает нормально и без ошибок на iOS 5 и 6. Но с новым iOS 7 я продолжаю получать эти две ошибки:
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.
Они никоим образом не связаны, и я продолжал получать первый за несколько недель, а потом я тоже получил второй.
Они получены в начале моего приложения, в этот момент я отправляю несколько HTTP POST и обрабатываю полученные данные. Я не могу понять, откуда берутся эти ошибки.
Я мог бы найти их, если бы мог понять их. Кто-нибудь знает, что они означают или в каких случаях их можно вызвать?
Ответы
Ответ 1
У меня также была первая из ваших проблем только сегодня:
ERROR: unable to get the receiver data from the DB
Я не знаю причины (возможно, каким-то образом кеш стал коррумпированным), но
удаление всей папки "Симулятор приложений" заставила проблему уйти для меня.
rm -rf ~/Library/Application Support/iPhone Simulator/7.0-64/Applications/*
Ответ 2
У меня такая же проблема, но есть время отладки на устройстве iOS (iPhone 4 iOS 7.0.4)
Не уверен, что вызывает это... Но я попробовал удалить приложение на устройстве и повторить попытку, затем ошибка исчезла.
Ответ 3
Эта ошибка обычно возникает в iOS7, и причина может быть проблемами кэша.
Я исправил проблему с помощью удаления папки симулятора.
Шаги:
Щелкните правой кнопкой мыши по окну "Finder" , выберите "Перейти в папку"
Вставить "~/Library/Поддержка приложений/Симулятор iPhone/"
Это откроет папку iPhone Simulator, содержащую симуляторы, используемые при выполнении.
Теперь удалить папку 7.x.
![enter image description here]()
Ответ 4
Сегодня такая же проблема. В моем случае сообщение об ошибке ERROR: unable to get the receiver data from the DB
не было разрешено путем очистки приложения от симулятора/устройства. Когда-то запускалось приложение, а ошибка снова сообщалась. Также он регистрировался каждый раз, когда я звонил [NSURLSession dataTaskWithRequest:...]
.
Обнаружено, что это связано с кешированием ответов. Установка политики для игнорирования локального кеша исключает регистрацию ошибок:
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];
Примечание. Сессия должна быть недействительной, если она больше не нужна, в противном случае произойдет утечка памяти.
Ответ 5
Я тоже столкнулся с аналогичной проблемой.
В том числе вышеприведенное предложение я также проигнорировал кеш в моем запросе по почте
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0];
и проблема не появилась для меня...
Ответ 6
Мне было легче исправить:
Просто удалил приложение из симулятора (как и с телефона - не нужно было удалять несколько папок). Исправлена проблема.
Ответ 7
Удаление полученных данных решило это для меня.
Окно > Организатоp > Проекты
Выберите свой проект, удалите его рядом с производными данными.