2016-09-22 45 views
1

m.b.我在問一個愚蠢的問題,但我在Swift和iPhone編程中真的很新手。使用XCode 8.0。 我想創建WebView應用,並已採取下一個代碼從這裏:http://sourcefreeze.com/uiwebview-example-using-swift-in-ios/URL,NSURL - 來自標準樣本的代碼中的編譯器錯誤

我的代碼:

import UIKit 
import Foundation 

class ViewController: UIViewController { 


    @IBOutlet weak var myWebView: UIWebView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     let url = NSURL (string: "http://www.sourcefreeze.com"); 
     let requestObj = NSURLRequest(URL: url!); 
     myWebView.loadRequest(requestObj); 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

當然,我已經創建UI對象的UIWebView和它連接到控制器:

@IBOutlet weak var myWebView: UIWebView! 

在構建過程中,我收到下一個紅色警報:

'NSURL'不能隱式轉換爲'URL';你的意思是用'as'來明確轉換嗎?

據我所知,此代碼在2年前完美工作。我想我錯過了什麼,但是什麼? 感謝您的提前。

+1

*「此代碼在2年前完美工作」* - Swift在過去兩年中發生了很多*變化*。特別是Xcode 8附帶的Swift 3。您可以查看發行說明和遷移指南https://swift.org/migration-guide/。 –

+0

NSURL類型更改爲swift 3.0中的URL – Janmenjaya

回答

0

這是解決問題最簡單的方法:

let url = URL(string: "http://www.sourcefreeze.com")! 
myWebView.load(URLRequest(url: url)) 

Xcode中經常故事你什麼是錯的。所以從Xcode消息可以理解NSURL應該轉換爲URL。嘗試閱讀相關資源和機器人使用舊的教程。 Swift是動態變化的語言,總是試圖使用最新的資源。

+3

第二個字符串給我錯誤:在調用中缺少參數'mimeType'的參數 – vkiper

0

嘗試以這種方式

myWebView.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.sourcefreeze.com"))) 
myWebView.delegate = self; 
self.view.addSubview(myWebView) 
+0

我收到錯誤:無法將類型'NSURL'的值轉換爲期望的參數類型'URL' – vkiper

+0

使用Swift native type String並使用guard來確保數據不是nil –

1

嘗試使用URL而不是NSURL因爲它是在斯威夫特3

let url = URL(string: "http://www.sourcefreeze.com") 

這裏換成URL類型是從蘋果開發者論壇的指令

The Swift overlay to the Foundation framework provides the URL structure, which bridges to the NSURL class. The URL value type offers the same functionality as the NSURL reference type, and the two can be used interchangeably in Swift code that interacts with Objective-C APIs. This behavior is similar to how Swift bridges standard string, numeric, and collection types to their corresponding Foundation classes.

For more information about value types, see Classes and Structures in The Swift Programming Language (Swift 3) and Working with Cocoa Frameworks in Using Swift with Cocoa and Objective-C (Swift 3).

0

This cod e工作:

let myUrl = URL (string: "http://www.sourcefreeze.com")! 
    let request = URLRequest(url: myUrl); 
    myWebView.loadRequest(request); 

現在WebView是不可見的,但我會嘗試首先在論壇中搜索解決方案。