#import file not found 在 Swift 项目中使用 ObjectiveC 时 cocoaPods 中的错误

Posted

技术标签:

【中文标题】#import file not found 在 Swift 项目中使用 ObjectiveC 时 cocoaPods 中的错误【英文标题】:#import file not found error in cocoaPods when using ObjectiveC in Swift project 【发布时间】:2017-06-21 15:22:33 【问题描述】:

我在我的 swift 3 项目中安装了一个 Objective C pod。我在 Podfile 中包含了“use_frameworks”,所以我不需要向桥接头添加任何内容。

问题是当我包含(第三方)生成的 ObjectiveC 文件时,该文件尝试从 pod #import 标头 - 它失败并显示“找不到‘[xxxxx].h’文件”

ObjectiveC #import "GTLRObject.h" 语句导致“GTLRObject.h file not found”错误。

我的播客文件:

target 'myHelloWorld' do
 # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
 use_frameworks!
 pod 'GoogleAPIClientForREST'
end

桥接头。我需要包含生成的 ObjectiveC 类的标头,以便我可以在我的 swift 代码中使用它:

#import "GTLREcho.h"

GTLREcho.h:

// NOTE: This file was generated by the ServiceGenerator.

// ----------------------------------------------------------------------------
// API:
//   echo/v1
// Description:
//   This is an API

#import "GTLREchoObjects.h"
#import "GTLREchoQuery.h"
#import "GTLREchoService.h"

错误在 GTLREchoObjects.h 中。 #import "GTLRObject.h" = "找不到'GTLRObject.h'文件"

#if GTLR_BUILT_AS_FRAMEWORK
   #import "GTLR/GTLRObject.h"
#else
   #import "GTLRObject.h"
#endif

如果我尝试从 swift 文件中引用 GTLRObject,我不会收到任何错误,例如

import Foundation
import GoogleAPIClientForREST

class ControllerHello: NSObject 

func sayHello(strTest: String)
    let gtlObject = GTLRObject
    

任何建议表示赞赏。

【问题讨论】:

更新用户标题搜索路径似乎可以解决这个问题。见this answer. 【参考方案1】:

因为这个答案可能对其他人有用。

使用GoogleAPIClientForREST时:

打开TARGETS > App > Build Settings

对于User Header Search Paths,添加Pods 并选择recursive

【讨论】:

以上是关于#import file not found 在 Swift 项目中使用 ObjectiveC 时 cocoaPods 中的错误的主要内容,如果未能解决你的问题,请参考以下文章

#import file not found 在 Swift 项目中使用 ObjectiveC 时 cocoaPods 中的错误

gulp-sasserror: File to import not found or unreadable

Cordova/Cordova.h file not found的解决方法

protobuf import 文件编译时 提示was not found or had errors问题总结

opencv mac macOS Sierra 报错 'QTKit/QTKit.h' file not found 解决记录

ERROR_PATH_NOT_FOUND 与 ERROR_FILE_NOT_FOUND,有啥区别?