2013-12-06 2 views
0

Я запускаю SimpletodoFinal.xcodeproj, включенный в образцы Simperium. Образец отлично работает, и я могу видеть элементы, синхронизированные между симулятором iOS и веб-приложением, подключенным к хранилищу данных Simperium.Как заполнить пустую базу данных CoreData из удаленного хранилища Simperium?

Я добавляю несколько элементов и гарантирую, что изменения синхронизированы. Затем я покинул приложение iOS и удалю базу данных sqlite приложения и снова запустил приложение. Это может показаться прецедентом, когда существующий пользователь вводит новое устройство в режиме онлайн.

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

спасибо.

ответ

0

Устранение неполадок в магазине sqlite может вызвать проблемы, поскольку Simperium также использует пару хранилищ метаданных для определения текущего состояния синхронизации.

Пожалуйста, попробуйте позвонить по методу [simperium signOutAndRemoveLocalData: YES] вместо этого, это предпочтительный способ удаления всего.

+0

В настоящее время я использую ветвь «master», которая добавляет файлы SPDictionary - *. Sqlite в каталог Documents. Эти файлы не удаляются, когда я вызываю [simperium signOutAndRemoveLocalData: YES]. Это намеренно? – CapoChino

+0

Да, такое поведение ожидается. [simperium signoutAndRemoveLocalData: YES] эффективно уничтожит содержимое базы данных CoreData + метаданные (но он не будет удалять файлы физического постоянного хранения. –

+1

Приятно, что мы можем вызвать эту функцию из командной строки отладчика. – CapoChino

0

Причина, по которой удаленные изменения не были загружены, заключается в том, что клиент считал, что это актуально. Был запись в файл настроек (/Library/Preferences/com.codality.SimpletodoFinal.plist), как это:

lastChangeSignature-Todo: 52a22dc4ba5fdc4e28e0fa8a

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

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

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

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