我用Xcode6 Beta 2编写了一个Swift应用程序,它使用CFNetwork类(如NSURLRequest和NSHTTPURLResponse )进行一些网络连接。
尽管如此,当我尝试在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类的任何使用都会导致应用程序在开始时崩溃。
发布于 2014-07-02 22:21:28
这是iOS 8 SDK中的一个已知错误。作为解决办法,在项目设置中要链接到的框架列表中,将Foundation.framework移动到CFNetwork.framework之前。
发布于 2014-10-29 23:15:45
对我来说,在Foundation.framework无法工作之前移动CFNetwork.framework就可以了。我需要关闭并重新启动这个项目才能开始工作。
发布于 2014-07-02 17:39:43
我能够通过创建一个新项目并复制我的所有类和资产来解决这个问题。不幸的是,我无法找到问题的真正根源。
任何替代的解决方案都是非常感谢的!
https://stackoverflow.com/questions/24524742
复制相似问题