我正在尝试创建一个自定义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
时,似乎找不到它。
在设置下构建阶段,以显示所有30个文件都在编译源下。这30个文件与ios-oauth2-rest-template
Xcode项目中的30个文件匹配。第31个文件是ios-oauth2-rest-template-dummy.m
。
答案 0 :(得分:1)
由于@ balazs630,我得以解决问题。我必须确保将访问控制设置为public
或open
才能访问它们。回顾我的代码,ApplicationUtils
是一个公共类,BaseClass
没有指定,因此默认为internal
,根据docs:
内部访问使实体可以在任何源文件中使用 从其定义模块中获取,但不在此源文件之外 模块。
对于有类似问题的任何人,请检查以确保您的访问控制设置正确。以下是一些使您熟悉Swift中访问控制的来源: