2015-07-31 3 views
0

Я работаю над проектом в Xcode, написанном в Swift. Я использую две стручки, AFNetworking и BDBOAuth1Manager. Это обе библиотеки Obj-C, поэтому простой файл моста для их импорта заботится обо всем.Установка Xcode Swift - файл импорта не найден

Теперь проблема возникает, когда я пытаюсь включить третий модуль, SwiftyJSON, который написан в Swift. Вот что Podfile выглядит следующим образом:

platform :ios, "8.0" 
use_frameworks! 

pod "AFNetworking" 
pod "BDBOAuth1Manager" 
pod "SwiftyJSON" 

link_with 'TwitterSearch', 'TwitterSearch Tests' 

После установки выше Podfile, мостиковый заголовок перестает работать, потому что теперь он не может найти файлы, которые я пытаюсь импортировать.

Для clarifty, это преодоление заголовка файла:

// 
// Use this file to import your target's public headers that you would like to expose to Swift. 
// 

#import "BDBOAuth1RequestOperationManager.h" 

Он работает, когда стручки только AFNetworking и BDBOAuth1Manager, которые написаны в Obj-C. Он не работает, если включен третий блок, SwiftyJSON, написанный в Swift.

Точные сообщения об ошибках:

  • Swift ошибка компиляции: файл "BDBOAuth1RequestOperationManager.h" не найдено
  • Swift ошибка компилятора: Не удалось импортировать моста Header
    путь-к-моста-заголовок

Любая идея, что это может быть?

ОБНОВЛЕНИЕ: Я выяснил, почему он не работает. Когда я вручную добавил в SwiftyJSON, все работало нормально. Вся проблема корни к этой линии: use_frameworks! Я вообще не знаком с рамками, но с практической точки зрения вы должны сделать следующее:

#import "path/BDBOAuth1RequestOperationManager.h" 

instead of 

#import "BDBOAuth1RequestOperationManager.h" 
+0

Путь путь импортируемого файла, соответствующий файлу импортирования, если это имеет смысл. И, извините, я новичок в StackOverflow. – Naldhelaan

ответ

0

попробуйте добавить версию к podfile как так

pod 'SwiftyJSON', '~> 2.2.1' 
+0

Я пробовал это раньше. Такое же поведение. – Naldhelaan

+0

Каковы ваши версии cocoapods и развертывание цели? – s1ddok

+0

Версия Cocoapods 0.38.2. Не уверен, что вы подразумеваете под развертыванием цели. – Naldhelaan

2

Обход

Podfile:

platform :ios, "8.0" 
use_frameworks! 

target 'SwiftAndObjCPods' do 
pod "SwiftyJSON" 
end 

target 'SwiftAndObjCPodsTests' do 
pod "SwiftyJSON" 
end 

Проект:

Drag & падения текущих версий AFNetworking и BDBOAuth1Manager непосредственно в ваш проект. Вы можете сделать это, разместив их в группе Pods> Pods> Показать в Finder и просто переместить их в удобное место.

Мостовой заголовок.ч

#import "AFNetworking.h" 
#import "BDBOAuth1RequestOperationManager.h" 

Swift использование

// No import 
let a = BDBOAuth1RequestOperationManager(baseURL: baseURL, consumerKey: "consumer", consumerSecret: "secret") 

Испытано: ссылки, строит, работает.

1

Нет Обход

Podfile

platform :ios, "8.0" 
use_frameworks! 

target 'ObjCSwiftPods' do 
pod "AFNetworking" 
pod "BDBOAuth1Manager" 
pod "SwiftyJSON" 
end 

target 'ObjCSwiftPodsTests' do 
pod "AFNetworking" 
pod "BDBOAuth1Manager" 
pod "SwiftyJSON" 
end 

-Bridging-Header

#import "../Pods/AFNetworking/AFNetworking/AFNetworking.h" 
#import "../Pods/BDBOAuth1Manager/BDBOAuth1Manager/BDBOAuth1RequestOperationManager.h" 

Примечание о Bridging-заголовка:

Замена ../ на {full path to Pods}/ необъяснимо доставила меня туда, где был выполнен Xcode.

Swift призывание

// necessary import 
import SwiftyJSON 

// test BDBOAuth1Manager 
let url = NSURL(string: "http://ObjCSwiftPods.com") 
let bdsm = BDBOAuth1RequestOperationManager(baseURL: url, consumerKey:"key", consumerSecret:"secret") 

// test AFNetworking 
let sec = AFSecurityPolicy() 

// test SwiftyJSON 
let json = JSON("{}") 

Смежные вопросы