在swift模块中使用依赖(框架)

时间:2015-02-18 15:16:17

标签: ios xcode swift frameworks cocoapods

我正在尝试创建一个swift模块(Cocoa Touch Framework),其中包含由cocoa pods设置的环境中的可重用代码,其中包括用Objective-C编写的第三方库(即Restkit)。 不幸的是,我无法在我创建的模块中使用Restkit。

以下是我创建模块的方法:

  1. 档案 - >新目标:Cocoa Touch Framework,语言:Swift,项目:MyProject,嵌入应用程序:MyProject

  2. 在“配置”部分的项目设置的“信息”选项卡中,我为新创建的目标定义了Pods.debug和Pods.release xcconfig文件。

  3. 在头文件中,Xcode为我自动创建了networkModule.h,我添加了以下行:

    #import< RestKit / RestKit.h>

  4. 结果:在尝试编译时,我得到错误“在框架模块中包含非模块化头文件'networkModule'”

    我已在项目目标和模块/框架目标的构建设置中将“允许框架模块中的非模块化包含”标记设置为“是”。

    我去了Cocoa pod项目并尝试将RestKit.h Header文件的可见性设置为目标成员资格中的“Public”(这当然不是解决可可pod环境的好方法)

    我无法编译。我仍然得到同样的错误。

    首先可以创建一个依赖于cocoa pod托管框架的Cocoa Touch Framework吗?

    顺便说一下。我创建一个私人可可豆荚的第一个想法也没有成功,因为它似乎没有被支持,尽管我正在使用可可豆荚0.36的预发布,支持swift。

1 个答案:

答案 0 :(得分: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中本地更改pod。每次进行更改时都不会进行切换和安装。

您可以通过添加

来导入广告连播

import Commons不是#import <Commons/Commons.h>这就是你在Objective C中的表现而不是Swift

一旦你有一个工作版本将它提交到git hub并将你的项目指向github版本。

希望这会有所帮助。