2015-08-09 56 views
2

我正在構建一個使用ADAL連接到Office365的Swift應用程序。幾個月前,在Podfile,我有這樣一行:ADAL iOS與CocoaPods v0.38使用Swift無橋接頭

pod 'ADALiOS', '~> 1.0.1' 

,一切工作正常,當我定義了一個橋接報,其中包括:

#import "ADALiOS/ADAuthenticationContext.h" 

最後,在我的SWIFT代碼,所有我需要的是增加

import ADALiOS 

但我也想開始使用SwiftyJSON,這是斯威夫特的框架,所以我加了幾行我Podfile:

pod 'ADALiOS', '~> 1.2.4' 
pod 'SwiftyJSON' 
use_frameworks! 

更新到CocoaPods V0.38允許在Objective-C庫(ADALiOS)中使用框架。根據文檔,不再需要Bridging標頭,因此我將其刪除。

現在,一切編譯罰款,但是當我調用ADAL代碼時,出現以下錯誤:

ADALiOS [2015-08-09 13:01:07 - C621BB01-686A-4064-9455-A4B55C11E0E8] 
ERROR: Error raised: 18. Additional Information: 
Domain: ADAuthenticationErrorDomain 
ProtocolCode:(null) 
Details:The required resource bundle could not be loaded. Please read the ADALiOS readme on how to build your application with ADAL provided authentication UI resources.. 
ErrorCode: 18. 

我假設,因爲它編譯/鏈接罰款,這是不相關的橋接報頭,但別的東西。

任何線索?

回答

-1

嘗試在項目中拖動SwiftyJSON框架。 不要使用cocoaPods,但要下載zip文件,然後解壓並將swift文件拖到項目中。 就像沒有必要在你的PodFile中添加use_frameworks,一切都應該正常工作。 (我已經完成了與另一個庫,它的工作)

+0

是的,這可能是一個解決方法,但我希望繼續使用Cocoapods來管理依賴關係。 – pierrebo

1

我終於解決了這個問題。如果其他人得到相同的「類型」的錯誤,這就是我所做的。

我從頭開始一個新項目,並使用CocoaPod安裝ADALiOS,而不使用use_framework!並將庫libADALiSO.a手動添加到項目中,以及使用#import「ADAuthenticationContext.h」添加橋接頭。我甚至使用過舊版本的ADALiOS(V1.0.2)。當試圖運行這個項目(這應該有工作),我收到了奇怪的警告,指出我在使用Xcode中的一些隱藏的文件夾複製功能:

~/Library/developer/xcode/DerivedData 
~/Library/developer/xcode/CoreSimulator/Device 

在任何情況下,它的工作,因爲它採取的一個複製到ru程序。然後,我剛剛刪除了其中的項目名稱的文件夾/文件,並重建了該程序。警告消失了,並再次發揮作用。

然後,我在我的Podfile中包含了所需的PromiseKit和use_frameworks,重新構建了應用程序並再次運行。我刪除它不需要橋接報頭,但只加在我的SWIFT代碼下面一行:

import ADALiOS 

,它仍然工作,因爲它是首先應該。

最後,我用我所有的代碼打開了我的原始項目,它也構建並運行時沒有任何錯誤。所以我浪費了3個小時從零開始重新嘗試所有的東西,認爲Cocoapods V0。38或aven ADALiOS是罪魁禍首,最終發現它可能只是Xcode中的一些東西。

所以我不知道爲什麼這些文件引起了問題,我有人可以添加一個解釋,那將是很棒的。

0

按照ADAL GitHub的倉庫,這應該是如果你使用的是豆莢用Objective-C的項目被固定在ADAL 2.1

0

。那麼請使用pod版本2.5.1,因爲這是可用的最新版本。但不幸的是,這個版本在任何地方都沒有提及,帖子和幫助博客仍然顯示2.2版本,這給編譯器錯誤。

但是,如果您在初始階段使用了2.2版本,那麼別擔心,只需'更新'您的項目,然後重新打開相應的工作區。這會讓你的代碼編譯時沒有任何錯誤。

相關問題