Xcode工作区 – 没有从框架项目窗格中find导入

我已经build立了一个包含两个Swift项目的工作区:一个是我正在开发的框架,另一个是框架的演示应用程序。

Podfile看起来像这样:

platform :ios, '9.0' workspace 'foo.xcworkspace' target 'framework' do project 'framework.xcodeproj' end target :'demo' do project 'demo/demo.xcodeproj' pod 'framework', :path => 'framework.podspec' end 

.podspec文件如下所示:

 Pod::Spec.new do |s| s.name = 'framework' s.authors = { "foo author" } s.version = '0.1.0' s.summary = 'foo summary.' s.homepage = 'foo homepage' s.platform = :ios, '9.0' s.license = { :type => "Proprietary", :file => "LICENSE" } s.source = { :git => 'https://url.to/foo.git', :tag => s.version.to_s } s.source_files = 'framework/framework/**/*.{swift,h,m}' s.requires_arc = true s.weak_framework = "XCTest" s.pod_target_xcconfig = { 'FRAMEWORK_SEARCH_PATHS' => '$(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks"', } end 

运行pod install ,Xcode / AppCode仍然不能从框架项目中看到类。 所以,如果我添加一个手动导入到演示应用程序中的类,并尝试编译,它会失败:

错误:(13,21)使用未声明的types'FooClass'

我需要做些什么才能让演示应用程序项目看到框架项目生成的窗格中的类?

尝试使用inherit! :search_paths inherit! :search_paths演示目标上的inherit! :search_paths这意味着它们不会获得它们自己的Pod的副本,但可以通过头文件看到它们。

 platform :ios, '9.0' workspace 'foo.xcworkspace' target :framework do project 'framework.xcodeproj' end target :demo do inherit! :search_paths project 'demo/demo.xcodeproj' pod 'framework', :path => 'framework.podspec' end 

未经testing,但也许值得一试

如果您安装了Cocoapod,请不要使用.xcodeproj文件来打开您的项目,而是在同一个文件夹中新创build的.workspace。

我终于解决了这个问题:

  1. 确保最小。 需要的iOS是在Podfile中定义的,例如:

    平台:ios,'10 .0'

  2. 将任何第三方Pod也添加到podspec文件中,例如:

    规格依赖性'Alamofire','〜4.5'规格依赖性'Serpent','〜> 1.0'

  3. 如果没有use_frameworks!pod install use_frameworks! 它会搞砸了一些事情(看到这个答案: LD:框架没有find豆荚 )。 所以在我得到这些无效的Pod xconfigs,我不得不删除,然后做一个干净的和pod安装。

之后,一切正常!