Ios 无法在Swift 2.0和Xcode 7的WebView中加载本地HTML文件

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

我有一个本地HTML静态内容,文件中没有需要在Web视图中加载的链接。我曾使用UIWebView加载它,但在升级到Swift 2.0和Xcode 7后,现有的实现在presentViewController行崩溃,我们试图在该行中显示包含web视图的视图控制器,但之前它仍在工作。这个问题似乎是因为WebKit的引入,但它不应该影响现有的实现权限。所以有人能帮我或建议我最好的方法吗? 该项目仅针对iOS 8及以上的iPad。 这是正在工作的代码

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。它仅与网络请求相关。