Bridging-header工作,但导入不起作用?

时间:2015-10-19 07:28:45

标签: ios xcode swift cocoapods bridging-header

我使用CocoaPods安装了一个库,这一切似乎都有效。我在我的项目中添加了一个桥接标题,我知道这是有效的,因为我在这个标题中使用了几个不同的库。但我刚安装并桥接libPhoneNumber-iOS它似乎有效,除了......它没有。我找到了文件,它在标题中正确导入它们,但我无法在swift中使用它。它应该是<system.web> <identity impersonate="true" userName="IUSR_WEBSERVER" password="password" /> </system.web> ,但它不存在。

我在我的标题中导入了这些:

NBPhoneNumberUtil

如果我输入任何不同的东西,它会给我一个错误,说它不能指定文件,所以这应该正确导入。此外,如果我在此标头文件中键入#import "libPhoneNumber_iOS/NBPhoneNumberUtil.h" #import "libPhoneNumber_iOS/NBPhoneNumber.h" ,我可以看到该对象,因此它可以正常工作。但在我的快速项目中,模块并不存在。再次,我知道我的桥接文件有效,因为我在这个文件中使用其他库,并且在swift中。什么想法可能是错的?

更新#1:

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

NBPhoneNumberUtil

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

2 个答案:

答案 0 :(得分:5)

我现在解决了这个问题。问题是我在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

现在它应该工作了。希望这有助于其他人。

答案 1 :(得分:1)

答案是在你的桥接标题中导入它们:

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

我用来测试它的程序如下所示。

创建一个新的Xcode项目

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

创建Podfile并安装

Podfile:

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()
    }
}

项目编译时没有错误。