Ios XCode表示';使用未声明的类型';尝试使用专用Pod(Swift)中定义的协议时

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中定义)

显然,我们的问题似乎与这两个堆栈溢出线程中描述的问题完全相同,但它们的解决方案并不适用于我们

线程1:

线程2:

我们使用的骨架是:

我们的Commons pod(使用基本应用程序中看不到的协议)是使用以下.podspec文件定义的:

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