Swift: невозможно использовать библиотеку из файла Pod

Я использую библиотеку Typhoon для Dependency Injection Framework. Я использую CocoaPod для установки этой библиотеки. Вот мой файл подкачки:

target "typhoon-swift-demo" do
    pod 'Typhoon'
end

target "typhoon-swift-demoTests" do

end

Я успешно установил, но когда я открываю файл проекта рабочей области. Я набираю эту строку кода как пример кода Typhoon:

public class ApplicationAssembly: TyphoonAssembly {

}

Я встречаю ошибку, что мое приложение не распознает TyphoonAssembly Я пытался использовать некоторые строки, такие как:

import Typhoon // not recogize typhoon
import TyphoonAssembly // not regconize

Подскажите, пожалуйста, как решить эту проблему. Что я должен добавить, прежде чем я смогу использовать библиотеку. Спасибо :)


person hqt    schedule 16.10.2014    source источник


Ответы (4)


Вы должны импортировать файлы заголовков Pod, используя Objective-C, а не Swift. Таким образом, вы будете смешивать два языка, если хотите использовать CocoaPods со Swift. Вот отличное руководство о том, как это сделать.

person quark    schedule 16.10.2014
comment
Хорошо :D большое спасибо :D это стоит мне времени :D просто потому, что я хочу сразу перейти к Swift, прежде чем изучать что-то базовое :D - person hqt; 17.10.2014
comment
Тот не работал для меня. Этот вариант был лучше blog.ios-developers.io/parse-backend-with -быстро - person jonypz; 19.11.2015

В дополнение к ответу Quark, Пример Typhoon Swift показывает, как настроить Typhoon для использования со Swift и CocoaPods.

Обратите внимание, что если вы используете тесты «в стиле приложения», которые сейчас используются по умолчанию почти везде, то цель теста уже будет неявно иметь зависимости основной цели. Поэтому тестовая цель должна быть объявлена ​​эксклюзивной. Пример:

platform :ios, '7.0'

target :PocketForecast, :exclusive => true do

  pod 'Typhoon', :head

  pod 'CKUITools'
  pod 'ICLoader'
  pod 'NGAParallaxMotion'
  pod 'NSURL+QueryDictionary'
  pod 'OCLogTemplate'
  pod 'PaperFold', :git => 'https://github.com/jasperblues/PaperFold-for-iOS.git', :tag => '1.2-no-gesture-recognizers'

end

target :PocketForecastTests do
  pod 'Expecta', '~> 0.2.1'
  pod 'OCHamcrest'
  pod 'OCMockito'
end

inhibit_all_warnings!

Если тестовая цель не объявлена ​​монопольной, то все библиотеки приложения будут связаны дважды. Это может вызвать проблемы в случае с Тайфуном, так как он использует много самоанализа.


Также обратите внимание на то, что в примере приложения есть связующий заголовок, который включает в себя:

#import "Typhoon.h"


Пример Тайфуна Свифт:

введите здесь описание изображения

person Jasper Blues    schedule 17.10.2014
comment
спасибо :) Я прочитал pod-файл проекта, но не понимаю, почему автор так пишет. Теперь я могу ясно понять: D Ваша библиотека + демонстрация великолепны не только для этой библиотеки фреймворка, но и для тех, кто пытается изучить программирование для iOS :) - person hqt; 17.10.2014
comment
:) Не могли бы вы добавить комментарий к подфайлу, объясняющий вышеизложенное, и отправить запрос на извлечение? Похоже, мы должны были включить это объяснение. - person Jasper Blues; 18.10.2014

Я думаю, что это нуждается в обновлении. Недавно я начал разрабатывать приложения Swift и, имея опыт работы с Java, искал такую ​​​​инфраструктуру, как Spring. Лучшее, что я нашел, это Тайфун. Однако я не нашел хорошего введения для новичков, поэтому я сделал небольшой проект, чтобы попробовать его.

Я интегрировал Typhoon следующим образом:

  1. Установка cocoapods
  2. Создание базового подфайла с параметром «use_frameworks!» строка как здесь
  3. установка модуля
  4. Добавление массива TyphoonInitialAssemblies в мой файл plist
  5. Создайте первую сборку и добавьте ее в массив в plist

В сборке,

import Typhoon

public class MyAssembly:TyphoonAssembly{}

Работает как шарм!

person estiedi    schedule 20.04.2015

Вы даже встречали эту ошибку.

Я исправил так: => удалить "платформа: ios, 'x.0'"

использовать_фреймворки! target 'LateManagement' do pod 'Alamofire' pod 'SwiftyJSON' end

person Duy linh Trần    schedule 25.08.2016