Чи можна використати CocoaPod, написаний на Objective-C, у своєму проекті Swift за допомогою swift?
Чи просто зробити заголовковий мост? І якщо так, чи можу я отримати доступ до об’єктів, класів та полів, визначених бібліотеками в CocoaPod у Swift?
Відповіді:
Основна відповідь на ваше запитання - Так, ви можете використовувати код-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"
Тепер ви можете використовувати всі класи, які визначені в імпортованих заголовках.
UIView+Toast
ім'я для вашого стручка? Якщо не спробуйте використати фреймворк імпорту, ім'я якого відповідає вашому імені під.
pod 'iOS-Echarts'
, тоді імпорт відбуватиметься наступним чином: Швидкий файл : Файл import iOS_Echarts
Objective-C :#import <iOS_Echarts/iOS-Echarts.h>
У podFile використовуйте прапор use_frameworks
! Всередині Xcode у Pod
структурі папок у залежності ви додаєте xxxxxxx-umbrella.h
у файли підтримки.
У вашому {PROJECT_NAME}-Bridging-Header.h
користуванні:
#import "xxxxxxx/xxxxxxx-umbrella.h"
Це працює для мене.
Вам просто потрібен мостовий заголовок і імпортувати туди те, що вам потрібно.