Повреждение данных ядра iOS? - PullRequest
3 голосов
/ 28 октября 2010

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

У меня есть приложение для iPhone с примерно 20 000 пользователей.Это позволяет пользователям отправлять сообщения друг другу и сохраняет эти сообщения в основных данных.Единственное, что он сохраняет в основных данных - это профиль пользователя, локальная копия и копия на сервере.

У меня небольшой процент пользователей, жалующихся на то, что они получают сообщения, но ничего не отображается, когда они отправляют сообщение (которое сразу попадает в основные данные, а затем отображается на экране), оно немедленно исчезает.Ничто, кроме полного восстановления, кажется, не может это исправить, и из того, что я могу собрать, даже восстановление, которое включает в себя восстановление только что сделанной ими резервной копии, не может это исправить.

Сначала я подумал, что данные ядра должны иметькаким-то образом поврежден ... но сообщения, которые они пытаются отправить, действительно отправляют, и это было бы невозможно, если бы их локальный профиль также был поврежден.

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

Есть ли у кого-нибудь предложения о том, что может произойти с основными данными, которые могут привести к такой ситуации, чтобы я мог начать пытаться отследить проблему?Я предполагаю, что это происходит примерно с 1% пользователей.

Еще раз, извините за общность вопроса, но это все, с чем мне нужно работать только сейчас!

Спасибо

** Редактировать

Простое пояснение: удаление и повторная установка приложения не решает проблему, когда это происходит.

** Редактировать

Мне только что пришла дополнительная информация от пользователя, который страдает от этой проблемы ... информация, сохраненная моим приложением в основных данных, все еще существует после удаления приложения ипереустановил, все это.Я удалял и переустанавливал свое приложение сотни раз за последний год на бесчисленных различных устройствах, и каждый раз, когда я удаляю и переустанавливаю, все предыдущие данные, хранящиеся в основных данных, полностью стираются ... но для этих пользователей этоне происходитПохоже ли это на проблему с iPhone, которая в основном требует восстановления?

** Редактировать 03.12.2010

ПОСЛЕДНИМ!У меня есть действительно надежная информация для работы.Я добавил flurry в свой последний выпуск, чтобы я мог отслеживать любые сообщения об ошибках в основных данных и мог соотносить полученные ошибки с идентификатором пользователя, который, как я знал, на самом деле испытывает проблему ...

Ошибкаis: "Msg: Error Domain = NSCocoaErrorDomain Code = 133020 'Операция не может быть завершена. (Ошибка какао 133020.)" UserInfo = 0x39c7c0 {ликтList = (' NSMergeConflict (0x39c700) для NSManagedObject (0x38ad00) с objectID3075 01029 * К сожалению, ошибка обрезана. Flurry должен иметь ограничение на размер сообщения, которое он может передать.

У меня нет доступа к моему mac и коду только сейчас, я начну расследование, как толькокак я делаю и отправляю обратно с некоторым исходным кодом и любыми результатами, которые у меня есть.

Ответы [ 3 ]

1 голос
/ 12 ноября 2011

У меня сейчас такая проблема. До сих пор я выяснил, что один и тот же объект модифицирован в двух NSManagedObjectContext-s. Объект X имеет (как минимум) два постоянных атрибута, a и b, один поток меняет a, другой поток меняет b, и CoreData не может объединяться.

Ключевая фраза в сообщении об ошибке: NSMergeConflict :

Ошибка домена = NSCocoaErrorDomain Code = 133020 «Операция не может быть завершена. (Ошибка какао 133020.)» UserInfo = 0x1544c7d0 {ликтList = ( " NSMergeConflict (0xc489f40) для NSManagedObject (0xd833ca0) ​​с objectID '0xd82b7c ...

Не уверен, что это действительно помогает, но, по крайней мере, он говорит вам, что может пойти не так ...

0 голосов
/ 02 ноября 2010

Влияет ли это на этих пользователей с момента создания там учетной записи? Может быть это как-то связано с их именем пользователя / идентификатором / личной информацией?

Если полное удаление приложения и переустановка не решают проблему, тогда я в недоумении, как это могут быть базовые данные - как вы сами говорите, я часто так делаю, и каждый раз удаляются все основные данные. Таким образом, если это повреждение данных ядра, оно должно быть в создании основных данных, а не самой базы данных. Я не думаю, что только у тех, кто установит ваше приложение, будут проблемы с сохранением основных данных.

Если у вас есть контакт с пользователем, столкнувшимся с этой проблемой, я бы попросил его попытаться создать новое имя пользователя «безопасное и нормальное».

Удачи.

0 голосов
/ 28 октября 2010

Есть ли у кого-нибудь предложения о том, что может произойти с основными данными, которые могут привести к такой ситуации, чтобы я мог начать пытаться отследить проблему?

О миллионе разных вещей.

Ваша настоящая проблема в том, что вы пытаетесь отладить умозрительным способом. Чтобы правильно исправить эту ошибку, сначала нужно знать, как воспроизвести ошибку. Нет другого способа узнать, исправили ли вы ее после того, как что-то попробовали.

Я бы не стал обвинять базовые структуры, такие как Core Data. Вероятность того, что ваша программа потеряет данные. Начните с этого предположения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...