簡體   English   中英

橋接標題有效,但是導入無效嗎?

[英]Bridging-header works, but imports are not working?

我使用CocoaPods安裝了一個庫,一切似乎都可以正常工作。 我在項目中添加了一個橋接頭,因為在該頭中使用了幾個不同的庫,所以我知道它是可行的。 但是我只是安裝並橋接了libPhoneNumber-iOS ,它似乎可以正常工作,除非...沒有。 我找到了文件,它正確地將它們導入了標題,但是我不能迅速使用它。 它應該是NBPhoneNumberUtil ,但是不存在。

我已經在標題中將它們導入為:

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

如果我鍵入不同的任何內容,它將給我一個錯誤消息,提示它無法指定文件,因此應正確導入。 另外,如果我在此頭文件中鍵入NBPhoneNumberUtil ,則可以看到該對象,因此它可以工作。 但是在我的快速項目中,模塊不存在。 再一次,我知道我的橋接文件有效,因為我在此文件中迅速使用了其他庫。 任何想法可能有什么問題嗎?

更新#1:

因此,我嘗試將導入添加到我的swift文件中,它“正常工作”。

import libPhoneNumber_iOS/NBPhoneNumberUtil
import libPhoneNumber_iOS/NBPhoneNumber

除了Xcode抱怨這不是可行的語法外,它還希望在某處添加一個半冒號。 但是現在我可以創建所需的對象,但是由於Xcode希望我先修復錯誤,所以無法編譯。 太奇怪了 有任何想法嗎?

我現在解決了這個問題。 問題是我使用use_frameworks! 在我的pod文件中,因此路徑是不同的。 實際上,當您使用use_frameworks! 您不需要橋接標頭,而必須直接快速導入文件。 問題是我不知道如何導入,但是現在可以了。

莢文件:

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

現在應該可以了。 希望這對其他人有幫助。

答案是將它們像這樣導入橋接頭中:

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

該項目編譯沒有錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM