2015-12-11 3 views
0

Вопрос для Simperium:simperium: база данных sqlite восстановлена ​​в Xcode Simulator (Xcode 7.1.1). синхронизация новых записей. старые записи не

Плохо написанный XC-модульный тест протер большинство данных из учетной записи пользователя simperium (мой.) Нет проблем. Я переместил дневной резерв файла sqlite в симулятор iPhone 5 (iOS 9.1) и удалил теперь бесполезный файл sqlite из того же каталога документов.

Я выполнил чистую (SHIFT-COMMAND-K) и начал симулятор. Все мои отсутствующие данные теперь появились в симуляторе приложений. Отлично.

НО, но восстановленные записи Core Data затем не синхронизировались с соответствующими ведрами Simperium. Неожиданно, поскольку Simperium DID успешно отвечает на синхронизацию новых записей при создании, обновлении и удалении действий.

Затем я удалил весь набор данных на Simperium.com. Тот же результат. Новые записи не синхронизируются, старые записи нет.

Существуют ли важные метаданные, которые я удалил при удалении старого файла sqlite. Если да, (как), я могу получить старые записи для повторной синхронизации?

ответ

1

Что происходит: метод, который должен поднять эти «новые старые сущности», обойден, потому что у всех из них уже есть оба, Key + GhostData.

Этот сценарий, как правило, восстанавливается автоматически, при условии, что эти объекты каким-то образом обновляются (таким образом, библиотека будет собирать их и синхронизировать с бэкэнд).

Самый простой способ заставить повторной загрузки будет:

  • В приложении, добавьте (временный метод + помощник), который запускается на выполнение право после Simperium инициализации (и, таким образом, Core Data стек подключен), но до вызова метода authenticate.

  • Loop через все объекты в этом ведре и устанавливается в ноль обоих, simperiumKey и ghostData значение.

  • Запустите приложение только один раз

  • убить этот вспомогательный метод (в противном случае он бы, вероятно, привести к дублированию записей!).

(Untested), но это должно сделать трюк!

+0

Я сделаю это. Благодарю. Это может занять некоторое время, чтобы проверить, поскольку я еще не углубился в кодовую базу simperium-ios. –

+0

Нет проблем !. Если что-нибудь, пожалуйста, не стесняйтесь открывать вопрос в официальном репозитории github. –

+0

Я закончил работу с незащищенными командами sqlite на резервном db, чтобы установить ZSIMPERIUMKEY и ZGHOSTDATA в значение null. Пример: «UPDATE [mydb] SET ZSIMPERIUMKEY = NULL». Я повторил это для каждого объекта/таблицы. Затем я переместил очищенную резервную копию в папку Simulator Documents и удалил старый файл Model.sqlite. Затем запустил приложение. Все хорошо синхронизировано. Спасибо за это! Я был удивлен, когда вручную удалил все пользовательские данные с панели Simperium, что синхронизация не работала для ранее записанных записей sync'd. Но, возможно, что-то об онлайн-синхронизации в режиме offline делает это сложным. –

Смежные вопросы