2014-07-02 78 views
4

我用Xcode6 Beta 2編寫了一個Swift應用程序,該應用程序使用諸如NSURLRequestNSHTTPURLResponse等CFNetwork類進行一些聯網。

應用程序工作得很好,與iOS 8,不過,當我嘗試在iOS 7設備或運行iOS 7模擬器中運行它,我得到了啓動應用程序時出現以下錯誤:

dyld: Symbol not found: _OBJC_CLASS_$_NSHTTPURLResponse 
    Referenced from: /Users/patrick/Library/Developer/CoreSimulator/Devices/B0A61F43-A67C-4803-8F5D-77C3972107BE/data/Applications/E0C7C89F-9EEE-4893-BE5B-FCC224F2855D/CheckYourWeather.app/CheckYourWeather 
    Expected in: /Applications/Xcode6-Beta2.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/Frameworks/CFNetwork.framework/CFNetwork 
in /Users/patrick/Library/Developer/CoreSimulator/Devices/B0A61F43-A67C-4803-8F5D-77C3972107BE/data/Applications/E0C7C89F-9EEE-4893-BE5B-FCC224F2855D/CheckYourWeather.app/CheckYourWeather 

我做了一些研究,發現它是一個鏈接問題。不過,我知道我正在使用的課程已經在iOS 7中提供。

我也嘗試將CFNetwork.framework添加到項目設置中的框架中,並將其設置爲可選項,這隻會導致應用程序在期間崩潰運行。

我感到困惑的部分是:我寫了一個測試應用程序,並將我在主應用程序中使用的代碼粘貼到它中,它工作得很好。因此代碼可能不是問題。

從模擬器/設備中刪除應用程序,清理項目並刪除Xcode的DerivedData尚未解決問題。

更新:

下面是導致崩潰的代碼:

extension NSURLRequest { 
    class func plainPostRequest(url: NSURL, httpBody: String) -> NSURLRequest { 
     let urlRequest = NSMutableURLRequest(URL: url) 
     urlRequest.HTTPMethod = "POST" 
     urlRequest.HTTPBody = httpBody.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) 
     urlRequest.setValue("text/plain", forHTTPHeaderField: "Content-Type") 

     return urlRequest 
    } 
} 

但是,這只是一個例子。任何CFNetwork類的使用都會導致App在啓動過程中崩潰。

+0

顯示導致此錯誤的代碼。 – Joride

+0

我編輯帖子以包含代碼。 – Patrick

+0

嘗試將CFNetwork.framework添加到目標>常規中的嵌入式二進制文件。 – vladof81

回答

11

這是iOS 8 SDK的一個已知錯誤。作爲一種解決方法,將Foundation.framework 移到之前,並在項目設置中鏈接到的框架列表中CFNetwork.framework。

+0

這是難以置信的愚蠢。但它的作品! :) –

+0

@ThomasClemensen:我認爲它在很多貝塔前都被修復過。 – user102008

+0

沒有幫助。也許還有其他建議? ( –

0

我能夠通過創建一個新項目並在那裏複製我所有的類和資產來解決問題。不幸的是,我無法找出問題的實際來源。

任何替代解決方案,非常感謝!

+0

我會在測試版軟件(Xcode)與beta語言(Swift):)結合時將它歸咎於它。 – Joride

1

對於我剛剛移動CFNetwork.framework不起作用的Foundation.framework。我需要關閉並重新打開該項目才能運行。

0

移動Foundation.framework不會因此進一步調查後,進一步的方法幫助我。

我能夠在構建階段加入main.m文件來解決問題 - >編譯源代碼

顯然它無法找到main.m文件。

相關問題