Использование GLKMath из GLKit в Swift
Итак, я использую книгу под названием iOS Games по учебникам Ray Wenderlich и пытаюсь использовать какой-то код objective-C, найденный там, чтобы заставить акселерометр управлять персонажем в моей игре. Вместо objective-C я хочу использовать Swift. Я столкнулся с проблемой при попытке создать var типа GLKVector3, который представляет собой трехмерный вектор. Когда я ввожу:
var raw:GLKVector3 = GLKVector3Make(irrelevant stuff)
Я получаю следующую ошибку:
использование модуля GLKVector3 как типа.
У меня есть импорт вверху моего быстрого файла для GLKit:
import GLKit
Любые идеи, как я могу получить функциональность из файлов GLKMath для использования в моей программе?
Ответы
Ответ 1
Swift добавила поддержку соединения в версии 1.2. Поля в импортированных объединениях доступны только для чтения, даже если они объявлены с помощью var
, но могут быть переданы и из C-функций по мере необходимости.
Замечания по выпуску для Swift 1.2 подразумевают, что поля могут быть недоступны вообще, но они по-прежнему доступны для чтения по меньшей мере для типов GLKit
:
Теперь Swift может частично импортировать агрегаты С, содержащие союзы, битовые поля, типы векторов SIMD и другие возможности языка C, которые не поддерживаются в Swift. Неподдерживаемые поля не будут доступны из Swift, но C и Objective-C API, которые имеют аргументы и возвращающие значения этих типов, могут использоваться в Swift. Это включает в себя, например, тип Foundation NSDecimal
и типы GLKit GLKVector
и GLKMatrix
.
Ответ 2
С выпуском бета-версии Xcode 6.3/Swift 1.2 вчера (8 февраля 2015 г.) теперь можно использовать GLKit из Swift.
Ответ 3
Здесь проверьте мое репо: https://github.com/noxytrux/SwiftGeom Я на самом деле строю целую библиотеку для этого, поэтому вы больше не будете вынуждены использовать GLKit или ждать для Apple, чтобы быстро реализовать его.