Этот пост очень помог мне решить эту проблему самостоятельно. Лично я смотрю на это как на ошибку Xcode. Ошибка или нет, это огромная ситуация с курицей и яйцом.
Я столкнулся с этим:
- Создал новый проект, используя Core Data
- Сгенерировал мой
NSManagedObject
подкласс+расширение (пока codegen: ClassDefinition
)
- Я случайно сохранил сгенерированные классы в неправильной папке
- Я удалил сгенерированные файлы
- Восстановлен в папке, которую я хотел
- ????- Ошибки Xcode
used twice
Как писали другие, я продолжал чистить свою сборку (и clean build folder
), но это так и не решило проблему сборки.
Наконец-то я понял, если вы изначально создали свои NSManagedObject
сгенерированные классы с codegen: ClassDefinition
, как я сделал, не зная, то вы заблокированы для проблемы с курицей и яйцом.
Затем я удалил автоматически сгенерированные классы, подумав, что мне нужно сгенерировать заново, что я и сделал. После повторной генерации я снова получаю ошибку сборки used twice
. Я вручную зашел в ../DerivedSources/CoreDataGenerated/Model/..
и удалил дубликаты. Опять же, я повторно сгенерировал, думая, что у меня будет только 1 копия (в моем проекте), но я ошибся. Если изначально было установлено codegen: ClassDefinition
, то Xcode продолжит создавать классы auto-generated
+расширения и поместить их в скрытую папку ../DerivedSources/CoreDataGenerated/Model/..
. Я повторил эту курицу и яйцо несколько раз, прежде чем понял.
Позже я понял, что вам действительно нужно отметить codegen: Manual/None
, однако, чтобы вернуть синхронизацию, вам нужно удалить автоматически сгенерированные файлы в ../DerivedSources/CoreDataGenerated/Model/..
и в вашем проекте, если они у вас еще есть.
Будьте осторожны с настройкой codegen: Manual/None
, для меня это было немного сложно, потому что codegen: Manual/None
не прилипало. Мне пришлось щелкать туда и обратно между объектами несколько раз, чтобы дважды/тройно проверить, что для каждого объекта установлено значение codegen: Manual/None
. Затем автоматически сгенерируйте файлы. На этом этапе ваша единственная копия автоматически сгенерированных файлов должна находиться в вашем проекте, а не в ../DerivedSources/CoreDataGenerated/Model/..
.
Наконец, я думаю, что это ошибка, потому что, если вы укажете codegen: Manual/None
, я не ожидаю, что Xcode вообще автоматически сгенерирует файлы, но он это сделает и поместит их в ваш проект. Еще больше сбивает с толку, если ваша настройка равна codegen: ClassDefinition
, кто, черт возьми, знает, что Xcode поместит файлы в скрытый каталог, но он будет доступен для использования в вашем проекте. Моя претензия к этому заключается в том, что автоматически сгенерированные файлы не контролируются исходным кодом, и если я сменю компьютер, я должен знать, чтобы автоматически сгенерировать их на новой станции.
Надеюсь, это поможет кому-то еще!
Ваше здоровье!
person
kev
schedule
03.12.2016
Station+CoreDataProperties.swift
не существовало. - person   schedule 04.07.2016cocoapods
? Если да, вы должны указатьuse_frameworks!
в своемpodfile
и построить его снова. - person Dershowitz123   schedule 04.07.2016codegen
может не сохраниться, если оно не сопровождается изменением сущности (например, переименованием атрибута). - person Nate Whittaker   schedule 16.12.2016