我用Xcode6 Beta 2編寫了一個Swift應用程序,該應用程序使用諸如NSURLRequest
和NSHTTPURLResponse
等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在啓動過程中崩潰。
顯示導致此錯誤的代碼。 – Joride
我編輯帖子以包含代碼。 – Patrick
嘗試將CFNetwork.framework添加到目標>常規中的嵌入式二進制文件。 – vladof81