XCode中说,“未申报类型的使用”试图使用一个专用吊舱内定义的协议时(SWIFT)(XCode s

2019-09-27 15:31发布

我和我的团队都停留在涉及基地项目+民营豆荚里面的一些协议,一个奇怪的现象。

我们的问题是,我们不能访问某些从我们的基本应用程序代码(协议)的标识符(在私有POD的定义)。

显然,我们的问题似乎是完全一样在这2个堆栈溢出线程所描述的,但他们的解决方案还没有与我们合作。

主题1: 源文件没有找到斯威夫特

主题2: CocoaPod安装,但没有看到斯威夫特代码

我们正在使用的骨架是这个:

我们共享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

从我们的基本应用程序,我们有以下Podfile(让我们共享荚到我们的主要xcworkspace)。

# 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

我们已经定义了我们的协议是公共的(因为它的预期做,因为它生活在“荚”项目中)。

还有什么应该寻找到?

PS:不只是我们自定义的协议是我们的主要应用程序的“隐形”,但也协议里面Alamofire,这是包含在我们的主应用程序的另一盒定义。 我们尝试使用它们,抱怨的XCode在编译时。

提前致谢。 问候。

EDIT1:缩小我们的问题,我们认为它的东西在编译时间发生的事情。 为什么? 由于Xcode是能够解决故障符号按CMD +点击(在我们的豆荚文件结构定义了两个协议),但编译器无法做到这一点,它是一个与错误“未申报类型的使用”的抱怨。

Answer 1:

Whops,成功(!?)

我们定义了一个生活波德框架内的协议,所以:什么是我们做错了什么?

显然,我们需要导入的框架(而不是协议(!)的类名称)的名称。 一个新手的错误的种类(?)。

一旦我们输入“进口共享”我们迅速文件的顶部,所有的“未定义XXXXXX”错误消失。

不知道但如果我们需要这种特定的进口部分原因是进口吊舱是一个框架的项目,或者我们只是偶然撞钉。

我印象中的一些其他类和来自我们正在使用一些其他的豆荚进口的东西,并不需要进口一部分,你可以直接从一开始就使用它们。 因此,我们missunderstanding可能是造成这(?)。

无论如何,正如我之前所说的,这些都是使用“自定义豆荚+迅捷+框架+莫名其妙复杂escalable。应用程序架构”新手问题。

让我们希望这个问题和它的(所谓的解决方案)带来了曙光在未来开发商在类似的境遇。

问候。



文章来源: XCode says 'Use of undeclared type' when trying to use a protocol defined inside a private Pod (Swift)