2016-11-05 125 views
0

我已經用這種方法在斯威夫特2如何使用本地Swift方式在Swift 3中讀取Plist?

var myDict: NSDictionary? 
if let path = NSBundle.mainBundle().pathForResource("Config", ofType: "plist") { 
myDict = NSDictionary(contentsOfFile: path) 
} 

但不知道如何閱讀Swift3 plist中不使用 的NSDictionary(contentsOfFile:路徑)

+0

你的問題是什麼?你想達到什麼目的? – Adeel

+0

需要swift3轉換爲以上代碼 –

+0

請參閱我的網站https://ioswisdom.000webhostapp.com/ –

回答

17

天然雨燕的方法是使用PropertyListSerialization

if let url = Bundle.main.url(forResource:"Config", withExtension: "plist") { 
    do { 
    let data = try Data(contentsOf:url) 
    let swiftDictionary = try PropertyListSerialization.propertyList(from: data, options: [], format: nil) as! [String:Any] 
     // do something with the dictionary 
    } catch { 
     print(error) 
    } 
} 

您還可以使用NSDictionary(contentsOf:用一個類型轉換:

if let url = Bundle.main.url(forResource:"Config", withExtension: "plist"), 
    let myDict = NSDictionary(contentsOf: url) as? [String:Any] { 
    print(myDict) 
} 

但是你明確地寫道:不使用的NSDictionary(contentsOf ...

基本上不無斯威夫特鑄造用NSDictionary,你扔掉的重要類型的信息。

+0

因此,以本地方式使用字典,我必須使用** PropertyListSerialization **右 –

+1

不一定。我更新了答案。 – vadian

+0

@vadian我想補充一點,'import Foundation'對於在原生'Swift'下工作是必要的。 – dinesharjani