【问题标题】: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 文件中。

标签: ios xcode swift cocoapods bridging-header


【解决方案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 谢谢!干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2016-07-26
    • 2012-09-30
    • 2010-11-26
    • 2017-02-05
    相关资源
    最近更新 更多