2015-02-18 1 views
6

Я пытаюсь создать быстрый модуль (Cocoa Touch Framework) с многократным кодом внутри среды, созданной программами какао, которая включает библиотеки сторонних разработчиков, написанные в Objective-C (а именно здесь Restkit) , К сожалению, я не могу использовать Restkit в модуле, который я создаю.Использование зависимостей в swift-модуле (framework)

Вот что я сделал, чтобы создать модуль:

  1. Файл -> Новая цель: Cocoa Touch Framework, язык: Swift, Project: MyProject, Вставить в Заявке: MyProject

  2. В Вкладка «Информация» параметров проекта в разделе «Конфигурации». Я определяю файл Pods.debug и Pods.release xcconfig для моей вновь созданной цели.

  3. В заголовочном файле, который Xcode автоматически создается для меня, networkModule.h, добавить следующую строку:

    < #import RestKit/RestKit.h >

Результат: Когда пытаясь скомпилировать, я получаю ошибку «включение немодульного заголовка внутри фрейм-модуля» networkModule »

Я установил флаг« Разрешить немодульное включение в структурные модули »в YES в настройках сборки для целевой задачи проекта и цели модуля/структуры.

Я пошел в проект Cocoa pod и попытался настроить видимость файла заголовка RestKit.h на «Public» в целевом членстве (что, конечно же, не является хорошим решением для работы с средой какао-пакетов)

Я не могу скомпилировать. Я все равно получаю ту же ошибку.

Возможно ли в первую очередь создать Cocoa Touch Framework с зависимостями от управляемой структуры какао-капсулы?

КПП. Моя первая идея создания частного контейнера для какао тоже не сработала, поскольку, похоже, она не поддерживается, хотя я использую предварительную загрузку какао-стручков 0,36 с поддержкой быстрой доставки.

+0

Это дубликат http://stackoverflow.com/questions/24876936/obj-c-cocoapods-swift-framework – bonebox

+0

@alex da franca Вы решили свою проблему? У меня такая же проблема, и я не могу найти решение. –

+0

Проблема исчезла после нескольких настроек настроек (или как это обновление Xcode ... ;-) Я больше не использую RESTKit, поскольку я искал «более быстрое» решение. Тем не менее я использую встроенные Framework, которые зависят от POD и заставили его работать, но сейчас сложно сказать, какие изменения в точности приводят к успеху. –

ответ

0

Вы должны быть в состоянии сделать свой выигранный частный Pod. Вам просто нужно сделать podspec для этого. Вот пример одного.

Pod::Spec.new do |s| 
    s.name   = "Commons" 
    s.version  = "1.0.0" 
    s.summary  = "Common code for my iOS projects." 
    s.license  = {:type => 'Commercial', :text => "Copyright (c) Dan Leonard(Or Your Name?). All rights reserved." } 
    s.source  = { :git => "https://github.com/PATHTOPOD", :tag => 
    s.version.to_s } 
    s.homepage  = "https://github.com/PATHTOPOD" 
    s.requires_arc = true 

    s.ios.deployment_target = '9.0' 

    s.subspec 'Core' do |ss| 
    ss.source_files = '*.swift' 
    end 

    s.subspec 'Menu' do |ss| 
    ss.source_files = 'Menu/*.swift' 
    ss.resources = ['Menu/*.storyboard', 'Menu/*.xcassets'] 
    ss.dependency 'Alamofire' 
    end 
end 

Затем внутри вашего проекта вы просто должны сделать pod init открыть podfile, который был только что создан и добавьте

source 'https://github.com/CocoaPods/Specs.git' 
xcodeproj 'YOURPROJECT.xcodeproj' 
platform :ios, '9.0' 
use_frameworks! 

pod 'Commons', git: 'https://github.com/PATHTOPODPROJECT' 
#pod 'Commons', :path => '/Users/YourUser/Path/To/Project/commons' 

pod 'KeychainSwift' 
pod 'SQLite.swift', git: 'https://github.com/stephencelis/SQLite.swift.git' 

Сейчас в этом примере Podfile Commons указывается в два раза второй закомментирована. Если вы раскомментируете его и запишите первый, то сделайте pod install в папке проектов с терминала. Это сделает DevelopmentPod, который является локальным. Таким образом, вы можете вносить изменения в POD локально в Xcode. Без переключения и установки модуля каждый раз, когда вы делаете изменения.

Вы импортировать стручок так же, как любой другой, поставив

import Commons не #import <Commons/Commons.h> Вот как вы это делаете в Objective C не Swift

После того, как у вас есть рабочая версия совершить его мерзавцу хаб и точку ваш проект в версию github.

Надеюсь, это поможет.

+0

Спасибо, но проблема заключалась не в том, чтобы создать собственный POD, который немного позже работал, и я полагаю, что это была версия-of-cocoapods-issue, тогда (год назад) Пожалуйста, прочитайте комментарии к вышеуказанному вопросу, что первоначальная проблема, которая НЕ создала собственный модуль, а скорее имеет POD, зависящие друг от друга, была решена путем обновления к контейнерам какао. –

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