Как CommonCrypto используется в SWIFT3?

Рекомендуется использовать #import "CommonCrypto / CommonCrypto.h" в заголовке моста. Это из вопроса по адресу: SHA256 in swift.
Однако, когда я использую данные ответы от Andi и Graham Xcode по-прежнему жалуется на «использование неразрешенного идентификатора CC_SHA256_DIGEST_LENGTH ...»

Я думаю, что сделал одну из двух ошибок: Либо (а) я что-то упускаю из-за того, что не правильно подключил заголовок и не импортировал. т.е. я неправильно настроил заголовок моста. Мне бы хотелось четких шагов по включению библиотеки и правильному созданию связующего заголовка. Или (б) библиотека не включена по умолчанию, и мне действительно нужно загрузить ее и сохранить локально, прежде чем я смогу ее использовать. Я хотел бы получить инструкции по этому поводу.

Спасибо.


person Metis    schedule 22.07.2017    source источник
comment
Хеширование Fow Swif 3 См. Примеры: HMAC с MD5, SHA1, SHA224, SHA256, SHA384, SHA512 в разделе документации.   -  person zaph    schedule 23.07.2017


Ответы (2)


Хорошие новости! Swift 4 (Xcode 10) сделал CommonCrypto доступным для импорта по умолчанию!

Это может быть бесполезно для вас в Swift 3, но все же это просто FYI

person Lokesh SN    schedule 10.10.2018
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - Из отзыва - person UdayKiran Pulipati; 10.10.2018
comment
Спасибо @pudaykiran, я поменял - person Lokesh SN; 10.10.2018

лучший способ за 8 шагов

1) -------------------------------------------

перейдите в инспектор файлов xcode, выберите файл проекта и добавьте новую цель.

инспектор файлов xcode

2) -------------------------------------------

выберите агрегат из кроссплатформенного раздела.

совокупный

3) -------------------------------------------

после того, как вы назовете его соответствующим образом, выберите его из целей и перейдите в раздел этапов сборки.

этапы сборки

4) -------------------------------------------

там нажмите кнопку «плюс» и создайте новую фазу выполнения сценария со следующим кодом. он сгенерирует соответствующий модуль для каждой платформы непосредственно перед сборкой, и вы сможете импортировать CommonCrypto даже для симулятора.

добавить скрипт  код сценария

mkdir -p "${SRCROOT}/Frameworks/CommonCrypto"
cat <<EOF > "${SRCROOT}/Frameworks/CommonCrypto/module.modulemap"
module CommonCrypto [system] {
    header "${SDKROOT}/usr/include/CommonCrypto/CommonCrypto.h"
    export *
}
EOF

5) -------------------------------------------

после этого шага перейдите к цели вашего проекта и фактически свяжите этот агрегат с процессом сборки

linkup

6) -------------------------------------------

выбрать совокупность

совокупный выбор

7) -------------------------------------------

теперь все еще в цели проекта, перейдите в настройки сборки, найдите "пути поиска заголовков" и вставьте этот путь, который будет пройден для вновь сгенерированного модуля.

${SRCROOT}/Frameworks/CommonCrypto

пути поиска заголовка

8) -------------------------------------------

Теперь все, что вам нужно сделать, это просто

import CommonCrypto

где-нибудь и начать его использовать.

Надеюсь, это поможет

person ha100    schedule 22.07.2017
comment
Спасибо @ ha100. Извините за поздний ответ ... просто возвращаюсь к проекту. Я не вижу ничего похожего на раздел заголовка моста Objective-C в настройках сборки. Я добавил файл заголовка моста, используя указанное вами соглашение об именах. Я использую Xcode 8.3. Есть ли разница между версиями для этого? - person Metis; 31.07.2017
comment
Я ищу работоспособное решение в Swift 4. Я искал везде и не смог использовать это решение. Любые идеи? - person llamacorn; 06.06.2018
comment
@ ha100 Я застрял на шаге 7. Мне не удалось найти пути поиска заголовков в моей цели проекта. какая-нибудь подсказка? - person Qadir Hussain; 02.08.2018