自定义cocoapod无法找到快速文件

时间:2019-05-03 20:56:45

标签: ios swift xcode cocoapods

我正在尝试创建一个自定义Cocoapod来处理我的iOS应用程序的所有联网呼叫。我遇到的问题是,当我尝试在代码中引用它们时,我的一些文件应该成为我的新Cocoapod /框架的一部分。

我按照本教程https://www.raywenderlich.com/5823-how-to-create-a-cocoapod-in-swift的操作,成功创建了Cocoapod .xcworkspace项目(名称:ios-oauth2-rest-template),并将其添加到bitbucket中,并且还在bitbucket上创建了一个私有PodSpec存储库(命名为: KPodSpec)(两个单独的存储库)。

我能够通过本教程学习,但是我陷入了“使​​用新的CocoaPod”这一部分。我能够运行以下命令将Cocoapod添加到我的PodSpec存储库中:

pod repo add KPodSpecs [Your RWPodSpecs Git URL]
pod repo push KPodSpecs ios-oauth2-rest-template.podspec

当我尝试在现有项目(名为:KApp)中使用新的Pod时,可以引用我的Cocoapod中的某些文件,而其他文件甚至在我import ios_oauth2_rest_template之后也无法自动完成。

我不确定我是否在我的ios-oauth2-rest-template项目中缺少KApp的框架。任何帮助将不胜感激。

KApp Podfile:

    # Uncomment the next line to define a global platform for your project
platform :ios, '12.0'

source 'https://github.com/CocoaPods/Specs.git'
source 'https://bitbucket.org/kpodspecs.git'

target 'KApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for KApp

  target 'KAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'KAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

  pod 'LBTAComponents'
  pod 'SwiftyJSON', '~> 4.0'
  pod 'TRON', '~>4.0'

  pod 'ios-oauth2-rest-template', '~> 0.0.1'

end

ios-oauth2-rest-template podspec:

Pod::Spec.new do |s|

# 1
s.platform = :ios
s.ios.deployment_target = '12.0'
s.name = "ios-oauth2-rest-template"
s.summary = "My summary here"
s.requires_arc = true

# 2
s.version = "0.0.1"

# 3
s.license = { :type => "Proprietary", :file => "LICENSE" }

# 4 - Replace with your name and e-mail address
s.author = { "My Name" => "myemail@email.com" }

# 5 - Replace this URL with your own GitHub page's URL (from the address bar)
s.homepage = "https://bitbucket.org/myStuff"

# 6 - Replace this URL with your own Git URL from "Quick Setup"
s.source = { :git => "https://bitbucket.org/myStuff.git",
:tag => "#{s.version}" }

# 7
s.framework = "UIKit"
s.dependency 'Heimdallr', '~> 3.6.1'

# 8
s.source_files = "ios-oauth2-rest-template/**/*.{swift}"

# 9
#s.resources = "RWPickFlavor/**/*.{png,jpeg,jpg,storyboard,xib,xcassets}"

# 10
# s.swift_version = "4.0"

end

ios-oauth2-rest-template Podfile:

# Uncomment the next line to define a global platform for your project
platform :ios, '12.0'

target 'ios-oauth2-rest-template' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  use_frameworks!

  # Pods for ios-oauth2-rest-template
    pod 'Heimdallr', '~> 3.6.1'

  target 'ios-oauth2-rest-templateTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

先谢谢了。我一直在互联网上搜寻为什么会发生这种情况毫无用处,而我很沮丧,因为我一开始没有太多的CocoaPods经验。

更新 这是一些屏幕截图

KApp的Pods部分,以显示我的一些课程。当我尝试使用ApplicationUtils时,它可以正常工作并自动完成,但是当我尝试使用BaseClass时,似乎找不到它。 The Pods section of the KApp, to show some of my classes.

在设置下构建阶段,以显示所有30个文件都在编译源下。这30个文件与ios-oauth2-rest-template Xcode项目中的30个文件匹配。第31个文件是ios-oauth2-rest-template-dummy.mBuild phases under settings to show that all 30 files are under compile sources.

该图显示了ios-oauth2-rest-template Cocoapod项目的文件夹结构。 Image showing the folder structure of ios-oauth2-rest-template

1 个答案:

答案 0 :(得分:1)

由于@ balazs630,我得以解决问题。我必须确保将访问控制设置为publicopen才能访问它们。回顾我的代码,ApplicationUtils是一个公共类,BaseClass没有指定,因此默认为internal,根据docs

  

内部访问使实体可以在任何源文件中使用   从其定义模块中获取,但不在此源文件之外   模块。

对于有类似问题的任何人,请检查以确保您的访问控制设置正确。以下是一些使您熟悉Swift中访问控制的来源: