Ios 无法在Swift 2.0和Xcode 7的WebView中加载本地HTML文件
我有一个本地HTML静态内容,文件中没有需要在Web视图中加载的链接。我曾使用UIWebView加载它,但在升级到Swift 2.0和Xcode 7后,现有的实现在presentViewController行崩溃,我们试图在该行中显示包含web视图的视图控制器,但之前它仍在工作。这个问题似乎是因为WebKit的引入,但它不应该影响现有的实现权限。所以有人能帮我或建议我最好的方法吗? 该项目仅针对iOS 8及以上的iPad。 这是正在工作的代码Ios 无法在Swift 2.0和Xcode 7的WebView中加载本地HTML文件,ios,uiwebview,swift2,xcode7,wkwebview,Ios,Uiwebview,Swift2,Xcode7,Wkwebview,我有一个本地HTML静态内容,文件中没有需要在Web视图中加载的链接。我曾使用UIWebView加载它,但在升级到Swift 2.0和Xcode 7后,现有的实现在presentViewController行崩溃,我们试图在该行中显示包含web视图的视图控制器,但之前它仍在工作。这个问题似乎是因为WebKit的引入,但它不应该影响现有的实现权限。所以有人能帮我或建议我最好的方法吗? 该项目仅针对iOS 8及以上的iPad。 这是正在工作的代码 let path = NSBundle.mainBu
let path = NSBundle.mainBundle().URLForResource("index", withExtension: "html")
let prepareRequest = NSURLRequest(URL: path!)
self.webView.loadRequest(prepareRequest)
谢谢
Crash Report
1 0x8707b09 StartWebThread()
2 0x524d6b0 __pthread_once_handler
3 0x523eebe _os_once
4 0x524d65f pthread_once
5 0x870789e WebThreadEnable
6 0x75ce14a +[WebView(WebPrivate) enableWebThread]
7 0x75cad90 WebKitInitialize
8 0x2822a30 ___UIApplicationLoadWebKit_block_invoke
9 0x4f0abef _dispatch_client_callout
10 0x4ef4a92 dispatch_once_f
11 0x4ef4922 dispatch_once
12 0x2822940 _UIApplicationLoadWebKit
13 0x4083461 _class_initialize
14 0x408bfe5 lookUpImpOrForward
15 0x408be8d _class_lookupMethodAndLoadCache3
16 0x409612f objc_msgSend
17 0x2cef77a UINibDecoderDecodeObjectForValue
18 0x2cef9b0 UINibDecoderDecodeObjectForValue
19 0x2cef4c3 -[UINibDecoder decodeObjectForKey:]
20 0x289480c -[UIView initWithCoder:]
21 0x28be337 -[UIScrollView initWithCoder:]
22 0x2cef7ae UINibDecoderDecodeObjectForValue
23 0x2cef4c3 -[UINibDecoder decodeObjectForKey:]
24 0x2b6cbca -[UIRuntimeConnection initWithCoder:]
25 0x2cef7ae UINibDecoderDecodeObjectForValue
26 0x2cef9b0 UINibDecoderDecodeObjectForValue
27 0x2cef4c3 -[UINibDecoder decodeObjectForKey:]
28 0x2b6be80 -[UINib instantiateWithOwner:options:]
29 0x29860d4 -[UIViewController _loadViewFromNibNamed:bundle:]
30 0x298686b -[UIViewController loadView]
31 0x2986a9f -[UIViewController loadViewIfRequired]
我在一个新项目上测试了你的代码,它没有崩溃。升级到Xcode7时是否禁用了应用程序传输安全 如果尚未禁用,请将其添加到plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
从文件中: 使用loadHTMLString:baseURL:方法开始加载本地HTML文件,或使用loadRequest:方法开始加载web内容 也许出于安全原因,他们改变了一些东西: 为了帮助您避免易受安全攻击,请确保使用此方法加载本地HTML文件;不要使用loadRequest: 我使用loadHTMLString:baseURL:并像一个符咒一样工作。它需要一个字符串,因此您应该获取html文件的内容并将其存储在字符串中
尝试这种方式,并让我知道您可以使用以下新的且仅限iOS9的API: func loadFileURL_uurl:NSURL, allowingReadAccessToURL:NSURL->WKNavigation
如果您的index.html需要从包中加载资源,那么第二个NSURL应该指向一个目录。我自己找到了答案。当我们使用dispatch_sync打开弹出窗口时,我们可以避免崩溃,这对我很有用 调度\u异步调度\u获取\u主队列{->Void in self.presentViewControllerpopoverViewController,动画:true,完成:nil
}是的,我已经添加了plist代码,但仍然会崩溃。在主要问题中添加了崩溃报告加载文件不需要NSAllowsArbitraryLoads。它仅与网络请求相关。