我正在尝试创建一个swift模块(Cocoa Touch Framework),其中包含由cocoa pods设置的环境中的可重用代码,其中包括用Objective-C编写的第三方库(即Restkit)。 不幸的是,我无法在我创建的模块中使用Restkit。
以下是我创建模块的方法:
档案 - >新目标:Cocoa Touch Framework,语言:Swift,项目:MyProject,嵌入应用程序:MyProject
在“配置”部分的项目设置的“信息”选项卡中,我为新创建的目标定义了Pods.debug和Pods.release xcconfig文件。
在头文件中,Xcode为我自动创建了networkModule.h,我添加了以下行:
#import< RestKit / RestKit.h>
结果:在尝试编译时,我得到错误“在框架模块中包含非模块化头文件'networkModule'”
我已在项目目标和模块/框架目标的构建设置中将“允许框架模块中的非模块化包含”标记设置为“是”。
我去了Cocoa pod项目并尝试将RestKit.h Header文件的可见性设置为目标成员资格中的“Public”(这当然不是解决可可pod环境的好方法)
我无法编译。我仍然得到同样的错误。
首先可以创建一个依赖于cocoa pod托管框架的Cocoa Touch Framework吗?
顺便说一下。我创建一个私人可可豆荚的第一个想法也没有成功,因为它似乎没有被支持,尽管我正在使用可可豆荚0.36的预发布,支持swift。
答案 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版本。
希望这会有所帮助。