5

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 クラスを使用すると、起動時にアプリがクラッシュします。

4

4 に答える 4

12

これは、iOS 8 SDK の既知のバグです。回避策として、プロジェクト設定でリンクするフレームワークのリストで Foundation.frameworkをCFNetwork.framework の前に移動します。

于 2014-07-02T22:21:28.147 に答える
2

CFNetwork.framework が機能しない前に Foundation.framework を移動するだけです。プロジェクトを機能させるには、プロジェクトを閉じて再度開く必要があります。

于 2014-10-29T23:15:45.980 に答える