Xcode 8: Скомпилировать с SDK базы данных iOS 9.3?

Я обновил приложение iOS до Swift 3.0 в бета-версии Xcode 8.0 (8S128d). Я подумал, что все готово и загружено в iTunes Connect. Когда я нажал «Отправить для просмотра», он дал мне список из 26 ошибок, по одному для каждой встроенной инфраструктуры, например:

Недопустимое значение sdk. Значение, предоставленное для части sdk объекта LC_VERSION_MIN_IPHONEOS в MyApp.app/Frameworks/libswiftFoundation.dylib, составляет 10,0, что больше максимально допустимого значения 9.3.2.

И одна окончательная ошибка:

Новые приложения и обновления приложений должны быть созданы с общедоступными (GM) версиями Xcode 6 или более поздних версий, OS X и iOS SDK. Не отправляйте приложения, созданные с помощью бета-версии, включая бета-версии OS X.

Хорошо, это было бы полезно знать, прежде чем я обновил свое приложение! Как я могу отправить это приложение?


Я заметил об изменении проекта Base SDK от iOS 10.0 до iOS 9.3, скопировав базовый SDK из Xcode 7.3.1 в Xcode 8:

/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk 

А затем Base SDK настройку Base SDK настройках сборки Xcode 8. Однако он не распознал новый SDK (см. Этот вопрос) , даже когда я ввел его вручную и скомпилировал его с iOS 10.0. Есть ли способ скомпилировать старый SDK? Или мне нужно отменить мой код на Swift 2?

Изменение XCode 8.0 Base SDK

Вот быстрое решение :

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

Отправка приложений

Приложения, созданные с использованием бета-версий Xcode или созданных для бета-версий операционных систем, не будут приниматься в App Store и Mac App Store. Приложения, которые вы отправляете, должны быть разработаны с использованием последней версии Xcode из Mac App Store и должны быть созданы для общедоступных версий iOS, OS X и watchOS – за исключением случаев, когда доступны семена GM. Когда GM Seed of Xcode становится доступным, используйте его, чтобы разработать приложение для отправки. Когда GM семена iOS, OS X или watchOS станут доступными, создайте приложение для этих версий.

https://developer.apple.com/support/pre-release-software/

Re [2]: Хорошо, это было бы полезно знать, прежде чем я обновил свое приложение! Как я могу отправить это приложение?

Используйте текущий или выпуск GM Xcode для создания и отправки вашего приложения.

К сожалению, не похоже, что есть способ изменить версию SDK в Xcode Beta; это может быть либо ошибка, либо просто тот факт, что Apple хочет, чтобы вы использовали бета-версию SDK вместе с бета-программным обеспечением. Как сказал @ l'L'l, нужно открыть приложение в стабильном Xcode, чтобы App Store согласился с представлением.

Однако я обнаружил, что переориентация проекта на Swift 2 не была чрезмерно сложной. Мне потребовался час, чтобы «понизить» весь проект, вручную исправив все ошибки в Xcode 7.3. В случае, если это поможет любому, основные шаблоны, которые я заметил во время процесса:

  • Изменение объявлений функций не должно иметь _ перед первым аргументом, потому что первый аргумент не анонимен в Swift 3
  • Удаление метки первого аргумента из всех вызовов функций, что иногда связано с переименованием функции (в том числе в делегатах, которые иногда не сообщают об ошибке)
  • Изменение пары встроенных свойств, таких как label.isOn to label.on
  • Добавление NS перед несколькими именами объектов, такими как NSData и NSTimer, которые стали Data и Timer в Swift 3 соответственно
  • «Снижение рейтинга» раскадровки путем повторного сохранения
  • Компилировать, используя Xcode-stable, но загружать с помощью Xcode-бета; У Xcode-stable были проблемы с моими профилями обеспечения, но, оказывается, не имеет значения, какая версия вы используете для загрузки двоичного файла из Organizer