2016-12-22 11 views
0

WebViewのURLを変更しようとしていますが、毎回fatal error: unexpectedly found nil while unwrapping an Optional valueと表示されます。WebView:致命的なエラーが発生しました:オプション値のアンラッピング中に予期せぬエラーが発生しました

どういうところが間違っていますか?ありがとう。

マイ AppDelegateコード
@IBOutlet weak var myWebView: UIWebView! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    myWebView.delegate = self 
    let url = NSURL (string: "http://cnn.com"); 
    let requestObj = NSURLRequest(url: url! as URL); 
    myWebView.loadRequest(requestObj as URLRequest); 

} 

func changeURL(urlIncome:String) { 
     let url = NSURL(string: urlIncome) 
     let requestObj = NSURLRequest(url: url as! URL) 
     myWebView.loadRequest(requestObj as URLRequest); 
} 

class AppDelegate: UIResponder, UIApplicationDelegate { 

var window: UIWindow? 
var vc = ViewController() 


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    UIApplication.shared.statusBarStyle = .lightContent 

    OneSignal.initWithLaunchOptions(launchOptions, appId: "", handleNotificationReceived: { (notification) in 

     let payload = notification?.payload 
     //let fullMessage = payload?.title 
     if let additionalData = payload?.additionalData, let actionURL = additionalData["url"] as? String { 
      self.vc.changeURL(urlIncome: actionURL); 
     } 

    }, handleNotificationAction: { (result) in 

     // This block gets called when the user reacts to a notification received 
     let payload = result?.notification.payload 
     let fullMessage = payload?.title 

     NSLog(fullMessage!); 

    }, settings: [kOSSettingsKeyAutoPrompt : true, kOSSettingsKeyInFocusDisplayOption : false]) 



    // Override point for customization after application launch. 
    return true 
} 
+0

このクラッシュはどのラインで発生しますか? urlIncomeの価値は何ですか? –

+0

urlIncomeは有効なURLですか?そうでない場合、NSURL(string:urlIncome)はnilを返し、エラーが表示されます) – mlidal

+2

注:ダウンキャストURLとURLRequestを強制しないでください。 http://stackoverflow.com/questions/37812286/swift-3-urlsession-shared-ambiguous-reference-to-member-datataskwithcomplet/37812485#37812485を参照して、パーセントでURLをエンコードしてください:http://stackoverflow.com/a/ 30149081/2227743 – Moritz

答えて

0

あなたはURLやURLリクエストをキャストする力であるため、そのクラッシュが理由。

変更以下のコード

let url = NSURL (string: "http://cnn.com"); 
let requestObj = NSURLRequest(url: url! as URL); 
myWebView.loadRequest(requestObj as URLRequest); 

let url = URL(string: "http://google.com")! 
myWebView.loadRequest(URLRequest(url: url)) 
+0

まだ同じエラーが発生しています。 –

+0

他のURLで試してみることができますか?エラーが発生している場所を教えてください。 –

+0

あなたのコードではないようです。私はブレークポイントを置いてエラーを指摘しなかった。 –

0

にこれは私がちょうどXCodeの8.2一般タブに設定Deployment Target 9.0スウィフト3でテストしてみたコードです。これが役に立てば幸い、スムーズに動作します:

あなたViewController.swift:

var myUrl = "" 

override func viewDidLoad() { 
     super.viewDidLoad() 

     if myUrl == "" { 
let url = URL (string: "http://cnn.com") 
webView.delegate = self 
webView.loadRequest(URLRequest(url: url!)) 
} else { 
let url = URL (string: myUrl) 
webView.delegate = self 
webView.loadRequest(URLRequest(url: url!)) 
} 

    } 

AppDelegate:また

if let additionalData = payload?.additionalData, let actionURL = additionalData["url"] as? String { 
      let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     let myVC : UIViewController = mainStoryboardIpad.instantiateViewControllerWithIdentifier("ViewController") as UIViewController 
myVC.myUrl = actionURL 
     self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
     self.window?.rootViewController = initialViewControlleripad 
     self.window?.makeKeyAndVisible() 
     } 

あなたInfo.plistファイルにのApp交通安全を追加することを忘れないでください任意の負荷を許可するために(あなたが既にそれをしていない限り:)

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSAllowsArbitraryLoads</key> 
     <true/> 
    </dict> 
+0

単純に機能しません。私はプッシュを受け取ったときに私のAppDelegateからchangeURLを呼び出しています。 –

+0

'changeURL'を呼び出すアプリケーションデリゲートにコードを表示します。おそらく 'myWebView'が' nil'になっている間違ったことでしょう。 – dan

+0

ok、私はあなたのwebViewをホストする同じswiftファイルからそのchangeURL()funcを呼び出したと思いました。次に、受け取った通知用のコードがprint()funcでうまく動作していることを確認し、そのコードを@danと書いてください。 – cubycode

関連する問題

 関連する問題