Точно такая же работа приложения на одном компьютере не работает на другом

#objective-c #xcode

#objective-c #xcode

Вопрос:

У меня и моего друга есть файлы проекта, подключенные к dropbox. Таким образом, код тот же.

Затем, когда я выполняю

 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Business" inManagedObjectContext:[BNUtilitiesQuick managedObjectContext]];
  

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

Поле BadgerNew.xcdatamodel, которое использовалось для создания managedObject, уже изменено. Моя команда сбросила симулятор iPhone и удалила приложение из симулятора iPhone, так что все это снова создается заново. Не работает.

Ответ №1:

Недостаточно информации, чтобы дать ужасно полезный ответ.

Однако DropBox — это ужасный способ поделиться проектом. Если у вас несколько человек, работающих над одной кодовой базой, то вам следует использовать какой-нибудь инструмент контроля версий; svn и git являются самыми популярными в наши дни.

Возьмите исходный код с компьютера вашего друга и загрузите его на свой собственный. Затем разделите их; opendiff MySource MyFriendsSource . Посмотрите, в чем разница. Если ничего не отличается (маловероятно), значит, что-то отличается в конфигурации ваших двух компьютеров.

Комментарии:

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

2. На самом деле, я подключаюсь к его компьютеру, запускаю проект на его компьютере, и он работает. Я думаю, это как-то связано с тем фактом, что xcdatamodel действительно изменился. Тем не менее, я несколько раз перезагружал симулятор iPhone.

3. Мой друг может запустить приложение, если он использует какой-то профиль. Однако, если он снова запустит программу, ошибка изменится. Теперь он говорит

4. Затем ошибка становится «Модель, используемая для открытия хранилища, несовместима с той, которая использовалась для создания хранилища». Однако мы несколько раз перезагружали симулятор iPhone.

5. Похоже, что сброс не сбрасывает все; у вас есть устаревшие данные на одной машине, которых нет на другой.