Как отладить «сущности не указаны» при работе с ZSync и CoreData Syncing - PullRequest
0 голосов
/ 23 марта 2010

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

| Разное | Ошибка | SyncServices ошибка предусловия в [ISyncSession _validateClient: entityNames: beforeDate: clientHasTruthForEntityNames: цель: селектор]: сущности не указаны

Кто-нибудь знает, что это значит и как его отладить? Я новичок в этом материале SyncServices. Ура!

Обновление

Хорошо, я вижу его в syncrospector, но все равно получаю нераспознанную ошибку. Что вы подразумеваете под моим клиентом, описание в Daemon неверно? Спасибо.

Обновление

Хорошо, у меня работало clientDescription, но теперь, когда это срабатывает:

ZAssert ([[ISyncManager sharedManager] registerSchemaWithBundlePath: путь], @ "Не удалось зарегистрировать схему синхронизации");

Я получаю эту ошибку: (

[ПРИМЕЧАНИЕ: это исключение возникло в сервер.] *** - [NSCFArray insertObject: atIndex:]: попытка вставить ноль

1 Ответ

0 голосов
/ 24 марта 2010

Это проблема в настройках Sync Services. Это означает, что вы не объявили, какие объекты необходимо синхронизировать. Я предлагаю сравнить ваш подпроект SyncSchema (для вашего настольного приложения) с тем, который включен в проект SampleDesktop.

обновление

Я все это проверил, но безрезультатно. Я использую версионную маму, это будет иметь значение? В моих ManagedObjectModels я должен использовать название версии или коллекции? (мама или мама?) Спасибо, я почти у цели!

Нет, схема должна указывать на вашу последнюю модель. Вы уверены, что он правильно указывает на это? Это может быть одним из самых сложных моментов. Включаете ли вы модель в комплект схемы или делаете на нее ссылку?

обновление

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

Хорошо, справился с этой проблемой. Синхронизация начинается сейчас, я получаю «не удалось зарегистрировать клиента, потому что: клиент с именем Xmac хочет синхронизировать нераспознанную сущность с именем: X.Entity». Это, к сожалению, происходит со всеми моими сущностями.

Эта ошибка означает, что ваша схема синхронизации все еще не полностью действительна. Ваш настольный клиент синхронизируется?

Можете ли вы увидеть его данные в синхронизаторе?

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

обновление Syncrospector

Хорошо, я вижу его в syncrospector, но все равно получаю нераспознанную ошибку. Что вы подразумеваете под моим клиентом, описание в Daemon неверно? Спасибо.

В syncrospector я предполагаю, что вы видите все ваши сущности и данные?

В демоне есть clientDescription.plist. Этот список описывает, с какими данными будет синхронизироваться демон. Этот список должен быть обновлен (так как по умолчанию относится к образцу приложения и т. Д.), Чтобы ссылаться на ваши структуры данных, как это делает ваше настольное приложение.

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

обновление ZAssert

Эта строка раскручивается в:

BOOL success = [[ISyncManager sharedManager] registerSchemaWithBundlePath:path];
NSAssert(success, @"Failed to register sync schema");

Это может быть вызвано несколькими причинами:

  1. Ваш путь ноль, проверьте это в отладчике
  2. Что-то не так с вашей схемой синхронизации.

Какие еще отладочные комментарии вы видите?

...