NSURLRequest
やなどの CFNetwork クラスを使用してネットワーキングを行う Xcode6 Beta 2 で Swift アプリを作成しましNSHTTPURLResponse
た。
アプリは 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 クラスを使用すると、起動時にアプリがクラッシュします。