桥接头有效,但进口不起作用?

Posted

技术标签:

【中文标题】桥接头有效,但进口不起作用?【英文标题】:Bridging-header works, but imports are not working? 【发布时间】:2015-10-19 07:28:44 【问题描述】:

我使用 CocoaPods 安装了一个库,一切似乎都可以正常工作。我在我的项目中添加了一个桥接头,我知道它可以工作,因为我在这个头中使用了几个不同的库。但我刚刚安装并桥接了libPhoneNumber-ios,它似乎工作,除了......它没有。我找到了文件,它在标题中正确导入了它们,但我不能快速使用它。应该是NBPhoneNumberUtil,但是不存在。

我已经在我的标题中像这样导入它们:

#import "libPhoneNumber_iOS/NBPhoneNumberUtil.h"
#import "libPhoneNumber_iOS/NBPhoneNumber.h"

如果我输入不同的内容,它会给我一个错误,说它不能指定文件,所以应该正确导入。此外,如果我在此头文件中键入NBPhoneNumberUtil,我可以看到该对象,因此它可以工作。但在我的 swift-project 中,模块不存在。同样,我知道我的桥接文件可以工作,因为我在这个文件中使用了其他库,而且很快。有什么想法可能是错的吗?

更新#1:

所以我尝试将导入添加到我的 swift 文件中,它“有效”。

import libPhoneNumber_iOS/NBPhoneNumberUtil
import libPhoneNumber_iOS/NBPhoneNumber

除了 Xcode 抱怨这不是一个可行的语法之外,它还想在某处添加一个分号。但现在我可以创建我需要的对象,但我无法编译,因为 Xcode 想要我先修复错误。这太奇怪了。有什么想法吗?

【问题讨论】:

您是否在使用此类的 swift 文件的标题中添加了#import "NBPhoneNumber.h"?对于某些库,我们必须在桥接头文件和 swift 文件中都使用import,但我不知道为什么。 你会怎么做呢? #import "NBPhoneNumber.h" 不是 swift-syntax 所以它不起作用,并且 import NBPhoneNumber 什么也没找到:/ 我错了,我的意思是import NBPhoneNumber 是的,我也试过了:/没有这样的模块'NBPhoneNumber' 如果已经导入桥接头,我不知道在哪里还需要将标头导入到 Swift 文件中。 【参考方案1】:

我现在解决了这个问题。问题是我在我的 pod 文件中使用了use_frameworks!,所以路径不同。实际上,当您使用use_frameworks! 时,您不需要桥接头,而必须直接在swift 中导入文件。问题是我不知道如何导入它,但现在我知道了。

pod 文件:

source 'https://github.com/CocoaPods/Specs.git'

use_frameworks!
platform :ios, '8.0'

target 'test' do

pod 'libPhoneNumber-iOS', '~> 0.8'

end

target 'testTests' do

end

在 Xcode 项目中,您不再需要桥接头,只需将库导入您想使用的位置,如下所示:

import libPhoneNumber_iOS

现在它应该可以工作了。希望这对其他人有帮助。

【讨论】:

【参考方案2】:

答案是在你的桥接头中像这样导入它们:

#import "NBPhoneNumberUtil.h"
#import "NBPhoneNumber.h"

我用来测试的过程写在下面。

创建一个新的 Xcode 项目

我为 Objective-C 使用了单视图应用程序模板。

创建 Podfile 并安装

Pod 文件:

source 'https://github.com/CocoaPods/Specs.git'
pod 'libPhoneNumber-iOS', '~> 0.8'

安装:

$ pod install

创建一个 Swift 文件

此时 Xcode 创建了一个桥接头文件。

我使用以下方法将导入添加到桥接头中:

#import "NBPhoneNumberUtil.h"
#import "NBPhoneNumber.h"

在 Swift 文件中,我写道:

class Test 
    func test() 
        let util = NBPhoneNumberUtil()
    

项目编译无误。

【讨论】:

好吧,如果我使用 CocoaPods 安装它们就不行了?由于编写这些导入行将找不到文件。找不到“NBPhoneNumberUtil.h”文件。 @ClockWise 你试过了吗?我已经使用 CocoaPods 0.38.0 安装了 Xcode 7 和 libPhoneNumber-iOS (0.8.8) 对此进行了测试。 是的,我试过好几次了。如果我键入 #import "libPhoneNumber_iOS/NBPhoneNumberUtil.h" #import "libPhoneNumber_iOS/NBPhoneNumber.h" 我使用 CocoaPods 0.39,libPhoneNumber-iOS (0.8.8),我只会找到文件 我会将您的帖子标记为正确答案,因为它确实安装没有问题:) 编辑:我在一个新项目中尝试过它并且它有效,但现在我发现了问题。我使用_framework!在我的 podfile 中,路径可能会弄乱。在我添加 use_framework 的新项目中!它停止工作了。 @ClockWise 谢谢!干杯!

以上是关于桥接头有效,但进口不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

iOS + Swift:使用 cocoapod 的桥接头不起作用

尽管时区有效,但设置默认时区不起作用

Joomla 菜单项别名 SEO 有效,但文章别名 SEO 不起作用

路线存在但不起作用,删除的路线仍然有效 Laravel

Bootstrap 手风琴在打字稿中不起作用

具有捕获组的有效正则表达式,但 sed 脚本不起作用