我正在尝试在 cocoa pods 设置的环境中创建一个带有可重用代码的 swift 模块(Cocoa Touch Framework),其中包括用 Objective-C 编写的第三方库(即此处的 Restkit)。 不幸的是,我无法在我创建的模块中使用 Restkit。
这是我创建模块所做的:
文件 -> 新目标:Cocoa Touch Framework,语言:Swift,项目:MyProject,嵌入应用程序:MyProject
在“配置”部分的项目设置的“信息”选项卡中,我为新创建的目标定义了 Pods.debug 和 Pods.release xcconfig 文件。
在 Xcode 自动为我创建的头文件 networkModule.h 中,我添加了以下行:
#import
结果:尝试编译时出现错误“在框架模块‘networkModule’中包含非模块化 header ”
我在项目目标和模块/框架目标的build设置中将“允许非模块化包含在框架模块中”的标志设置为是。
我去了 Cocoa pod 项目并尝试在目标成员中将 RestKit.h 头文件的可见性设置为“Public”(这当然不是扰乱 Cocoa Pod 环境的好解决方案)
我无法编译。我仍然遇到同样的错误。
是否有可能首先创建一个依赖于 cocoa pod 托管框架的 Cocoa Touch Framework?
顺便说一句。我创建私有(private) cocoa pod 的第一个想法也没有成功,因为它似乎不受支持,尽管我使用的是支持 swift 的 cocoa pods 0.36 预发行版。
最佳答案
您应该能够将您赢得的私有(private) Pod 设为私有(private) 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 进行更改。每次进行更改时无需切换和安装 pod。
您将像导入任何其他 pod 一样导入 pod
import Commons
不是#import <Commons/Commons.h>
这就是你在 Objective C 而不是 Swift 中的做法
一旦你有了一个工作版本,将它提交到 git hub 并将你的项目指向 github 版本。
希望这对您有所帮助。
关于ios - 在 swift 模块(框架)中使用依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28587000/