Як використовувати Objective-C CocoaPods у швидкому проекті


83

Чи можна використати CocoaPod, написаний на Objective-C, у своєму проекті Swift за допомогою swift?

Чи просто зробити заголовковий мост? І якщо так, чи можу я отримати доступ до об’єктів, класів та полів, визначених бібліотеками в CocoaPod у Swift?

Відповіді:


169

Основна відповідь на ваше запитання - Так, ви можете використовувати код-object-c, побудований на основі CocoaPods.

Важливішим питанням є "Як користуватися такими лібами?"
Відповідь на це запитання залежить від use_frameworks!прапора у вашому Podfile:
Давайте уявимо, що ви хочете використовувати підручник Objective-C з іменем CoolObjectiveCLib.

Якщо ваш файл pod використовує use_frameworks!прапор:

// Podfile
use_frameworks!
pod 'CoolObjectiveCLib'

Тоді вам не потрібно додавати файли заголовків мостів.
Все, що вам потрібно - це імпорт фреймворку у вихідному файлі Swift:

// MyClass.swift
import CoolObjectiveCLib

Тепер ви можете використовувати всі класи, які представлені в lib.

Якщо у вашому файлі pod не використовується use_frameworks!прапор:

// Podfile
pod 'CoolObjectiveCLib'

Потім потрібно створити мостовий файл заголовка та імпортувати туди всі необхідні заголовки Objective-C:

// MyApp-Bridging-Header
#import "CoolObjectiveCLib.h"

Тепер ви можете використовувати всі класи, які визначені в імпортованих заголовках.


як отримати доступ до швидких класів із внутрішніх файлів .m (якщо я хочу налаштувати ці стручки)?
JAHelia

1
У мене файл use_frameworks був прокоментований у підфайлі мого швидкого проекту і я хотів використати стручок Toast, який насправді є категорією-c. Просто написавши імпорт UIView + Toast, я отримав помилку компіляції: послідовні оператори в рядку повинні бути розділені символом ';'
Chanchal Raj

@ChanchalRaj - це UIView+Toastім'я для вашого стручка? Якщо не спробуйте використати фреймворк імпорту, ім'я якого відповідає вашому імені під.
Влад Папко

1
Я використовував той самий код, щоб використовувати код objc для швидкого файлу, але це видає мені помилку, не маючи такого модуля "POD ІМЯ". Чи потрібно мені встановлювати будь-який інший прапор
Прашант Тукадія,

4
Якщо ви стикаєтесь із проблемами з use_frameworks! , це може бути тому, що оператори імпорту написані не у правильному форматі. наприклад, якщо файл podFile містить pod 'iOS-Echarts', тоді імпорт відбуватиметься наступним чином: Швидкий файл : Файл import iOS_Echarts Objective-C :#import <iOS_Echarts/iOS-Echarts.h>
Кушаль Ашок

2

У podFile використовуйте прапор use_frameworks! Всередині Xcode у Podструктурі папок у залежності ви додаєте xxxxxxx-umbrella.hу файли підтримки.

У вашому {PROJECT_NAME}-Bridging-Header.hкористуванні:

#import "xxxxxxx/xxxxxxx-umbrella.h"

Це працює для мене.



0

І НЕ забудьте додати ім'я файлу заголовка мосту до Target -> Параметри побудови -> Заголовок мосту Objective-C

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.