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

标签 ios xcode swift frameworks cocoapods

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

这是我创建模块所做的:

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

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

  3. 在 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/

相关文章:

ios - 如何在特定条件下禁用按钮操作

ios - 向 tableview 添加渐变会隐藏内容

iphone - 没有在适当的时候更新iphone中mkMapView中的注释标题和副标题

ios - 有谁能帮我向应用商店提交申请吗?

iOS 11 - 使用大标题作为导航 (Swift)

swift - 使用未声明的类型 'MainGameScreenViewController'

iphone - 我可以在 UIScrollView 中禁用橡皮筋惯性滚动吗

ios - 由于 UI 编码,我的 ViewController 变得非常大

macos - 注册网络历史记录通知处理程序时引发意外异常,出了什么问题?

ios - WKWebView 加载完成后,事件指示器不会停止旋转