Ios XCode表示';使用未声明的类型';尝试使用专用Pod(Swift)中定义的协议时
我和我的团队陷入了一个奇怪的境地,涉及到一个基础项目+内部有一些协议的私有吊舱 我们的问题是,我们无法从我们的基础应用程序代码访问一些(协议)标识符(在专用pod中定义) 显然,我们的问题似乎与这两个堆栈溢出线程中描述的问题完全相同,但它们的解决方案并不适用于我们 线程1: 线程2: 我们使用的骨架是: 我们的Commons pod(使用基本应用程序中看不到的协议)是使用以下.podspec文件定义的:Ios XCode表示';使用未声明的类型';尝试使用专用Pod(Swift)中定义的协议时,ios,swift,xcode,protocols,podfile,Ios,Swift,Xcode,Protocols,Podfile,我和我的团队陷入了一个奇怪的境地,涉及到一个基础项目+内部有一些协议的私有吊舱 我们的问题是,我们无法从我们的基础应用程序代码访问一些(协议)标识符(在专用pod中定义) 显然,我们的问题似乎与这两个堆栈溢出线程中描述的问题完全相同,但它们的解决方案并不适用于我们 线程1: 线程2: 我们使用的骨架是: 我们的Commons pod(使用基本应用程序中看不到的协议)是使用以下.podspec文件定义的: Pod::Spec.new do |s| s.name = "Com
Pod::Spec.new do |s|
s.name = "Commons"
s.version = "0.1.10"
s.summary = "Commons framework"
s.description = <<-DESC "Commons framework"
DESC
s.homepage = "http://EXAMPLE/Commons"
s.license = { :type => "Commercial" }
s.author = { "Author" => "author@mail.mail" }
s.source = { :git => "GITLAB_PRIVATE_URL/commons-iOS-Pod.git", :tag => s.version }
s.source_files = "Commons", "Commons/**/*.{h,m,swift}"
s.exclude_files = "Commons/Exclude"
end
我们已经将协议定义为public(正如预期的那样,因为它生活在“Pods”项目中)
我们还应该调查什么
PS:不仅我们的自定义协议在我们的主应用程序中是“不可见”的,而且在Alamofire中定义的协议也是不可见的,Alamofire是我们主应用程序中包含的另一个Pod。我们尝试使用它们,XCode在编译时会抱怨
提前谢谢。
你好
编辑1:缩小我们的问题范围,我们认为这是在编译时发生的事情。为什么?因为XCode能够通过按CMD+Click(在我们的Pods文件结构中定义了两个协议)来解决错误符号,但编译器无法解决,而且它抱怨“使用未声明的类型”错误。Whops,success(!?)
我们定义的协议生活在一个框架内,所以:我们做错了什么
显然,我们需要导入框架的名称(而不是协议的类名(!)。一种新手错误(?)
一旦我们在swift文件的顶部键入“import Commons”,所有“undefined xxxxxx”错误都消失了
不确定我们是否需要这个特定的导入部分,因为导入的Pod是一个框架项目,或者我们只是碰巧击中了要害
我的印象是,一些其他类和东西是从我们正在使用的其他pod中导入的,不需要导入部分,您可以从一开始就直接使用它们。所以我们的误解可能是由这个(?)引起的
不管怎样,正如我之前所说,这些都是使用“自定义pods+swift+Frameworks+复杂的escalable.app架构”的新手问题
让我们希望这个问题及其(所谓的解决方案)能让未来的开发者了解到类似的情况
问候。呼,成功(!?)
我们定义的协议生活在一个框架内,所以:我们做错了什么
显然,我们需要导入框架的名称(而不是协议的类名(!)。一种新手错误(?)
一旦我们在swift文件的顶部键入“import Commons”,所有“undefined xxxxxx”错误都消失了
不确定我们是否需要这个特定的导入部分,因为导入的Pod是一个框架项目,或者我们只是碰巧击中了要害
我的印象是,一些其他类和东西是从我们正在使用的其他pod中导入的,不需要导入部分,您可以从一开始就直接使用它们。所以我们的误解可能是由这个(?)引起的
不管怎样,正如我之前所说,这些都是使用“自定义pods+swift+Frameworks+复杂的escalable.app架构”的新手问题
让我们希望这个问题及其(所谓的解决方案)能让未来的开发者了解到类似的情况
问候。添加播客后尝试清理项目?我们在添加播客前后都清理了项目。甚至是派生数据。尝试在添加POD后清理项目?我们在添加POD前后都清理了项目。甚至是衍生数据。
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
target 'ios-appbase' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
pod 'Alamofire'
pod 'ViewDeck'
pod 'JLRoutes'
pod 'Commons', :git => 'GITLAB_PRIVATE_URL/commons-iOS-Pod.git', :tag => '0.1.4', :branch => 'develop'
pod 'RestManager', :git => 'GITLAB_PRIVATE_URL/RestManager-iOS-Pod.git', :tag => '0.1.3'
pod 'BaseClasses', :git => 'GITLAB_PRIVATE_URL/BaseClasses-iOS-Pod.git', :tag => '0.1.3'
pod 'DesignManager', :git => 'GITLAB_PRIVATE_URL/DesignManager-iOS-Pod.git', :tag => '0.1.2'
end