Я нашел вышеупомянутые ответы действительно полезными, особенно ответ Ника Локвуда.
Я только что переименовал пару папок в Xcode 8 и столкнулся с еще двумя проблемами: A) "отсутствует из-за ошибок рабочей копии" B) Сбои Core Data .
Как решить эти две проблемы:
A) " отсутствует в ошибках рабочей копии "
Я нашел следующий ответ очень полезным: Swift 3 / Xcode 8 Upgrade - 100 файлов DerivedData, отсутствующих в ошибках рабочей копии
В основном Xcode 8 имеет строгий контроль источника, которыйможет привести к вышеуказанным ошибкам.Вам необходимо:
- Очистить производные от Xcode данные.
- Перейти к Source Control и нажать «Обновить состояние».
- Перейти к Source Control и нажать «Commit»;при фиксации выберите все файлы на левой боковой панели меню фиксации (щелкните правой кнопкой мыши -> Выбрать все).
- Возможно, вы получите сообщение об ошибке.
- Закройте меню фиксации.
- Обновить статус.
- Закройте ваш проект, выйдя из Xcode.
- Повторно откройте ваш проект, обновите статус, подтвердите снова.
- На этот раз фиксация должна работать.
- Нажмите Project -> Clean.
Я предполагаю, что вы уже включили Source Control.Если вы этого не сделали или застряли, следуя моим инструкциям, просто следуйте более подробным инструкциям по приведенной ссылке.
B) Сбой основных данных
Переименованиепапки иногда испортят Core Data.Существует несколько возможных причин, по которым это так, и ниже приведены некоторые исправления, которые я могу предложить:
Неправильно AppDelegate название модели.Это было так в моей ситуации.Перейдите в ваш AppDelegate и найдите let container = NSPersistentContainer(name: "YOUR CORE DATA MODEL NAME")
.Убедитесь, что имя указано правильно.
В будущем (через несколько лет после этой публикации, когда Apple снова изменит Базовые данные) или если вы используете более старую версию Базовых данных, внимательно посмотрите на AppDelegate.,Там, вероятно, есть что-то странное, что портит ваши базовые данные.
Неверное название модели в xcdatamodeld .Перейдите в Finder и откройте ваш .xcdatamodeld в текстовом редакторе.
Проверьте следующее:
<plist version="1.0">
<dict>
<key>_XCCurrentVersionName</key>
<string>YOUR CORE DATA MODEL NAME.xcdatamodel</string> <-- Make sure this is correct.
</dict>
</plist>
Более подробно здесь: Файлы модели Core Data делаетне загружается при переименовании
Если две вышеупомянутые вещи не работают, попробуйте 1) удалить вашу сущность, а затем добавить другую идентичную сущность или 2) удалить вашу xcdatamodeld, а затем добавить другую модель данных, которая идентична (и убедитесь, что имяnew xcdatamodeld соответствует тому, что находится в вашем AppDelegate и остальной части вашего кода).
Никогда не делайте этого с работающим приложением - или, если вы делаете это, убедитесь, что при этом правильно перенесли свои базовые данные.