Хорошо, давайте сделаем это с нуля шаг за шагом, просто чтобы вспомнить, что это возможно (использовал Xcode 11.2, извините - нет 10.2, но я делал это даже раньше, так что с тех пор ничего не изменилось)
1) Создать новый шаблон формы проекта
iOS> Приложение для одного представления> Образец (Swift / Storyboard)> Далее> Создать> Build> Ok
2) Создание stati c lib из шаблона
Project Navigator> Пример> Добавить цель> iOS> Stati c Библиотека> Калькулятор (Objective- C)> Fini sh
3) Добавить что-то значимое в Calculator
Обновить Calculator.h & Calculator.m с помощью следующий ...
@interface Calculator : NSObject
+ (NSString *)calculatedValue;
@end
@implementation Calculator
+ (NSString *)calculatedValue {
return @"1 + 1 = 5";
}
@end
Переключить активную схему в Калькулятор> Построить> ОК
4) (!!! Очень важный шаг) Подготовить Swift-Obj C bridge in main target
Я предпочитаю, чтобы Xcode делал это, поэтому ... переключите обратно активную схему в Sample app
Файл> Создать> Cocoa Touch Class> Stub ( Цель- C)
Далее> (Убедитесь, что цель проверена на примере)> Создать
Создать заголовок моста (Вот и все! - на самом деле внутренне это делает больше)> Удалите Stub.h / m (так как они нам не нужны)
5) Откройте Sample-Briding-Header.h и вставьте в него #import "Calculator.h"
6) Добавить библиотеку в основное целевое приложение
Project Navigator> Образец> Образец цели> Общее> Раздел «Каркасы, библиотеки ...> +> выбрать libCalculator.a
Собственно, вот и все - теперь можно использовать классы Objective- C из библиотеки stati c в основном приложении на основе Swift
7 ) Простые демонстрационные манипуляции ... создайте UILabel
в View Controller Scene
из Main.storyboard
и создайте выход для него в ViewController.swift
, установите строку, сгенерированную в библиотеке, в UILabel.text
свойство
class ViewController: UIViewController {
@IBOutlet weak var results: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
results.text = Calculator.calculatedValue()
}
}
8) Build & Run> OK (посмотрите результат интеграции)