2016-11-05 1 views
0

Я уже использовал этот метод в Swift 2Как использовать собственный способ Swift для чтения Plist в Swift 3?

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

Но не знаю, как читать PLIST в Swift3 без использования NSDictionary (contentsOfFile: путь)

+0

Что вы думаете об этом? чего вы пытаетесь достичь? – Adeel

+0

необходимо быстрое преобразование для вышеуказанного кода –

+0

Пожалуйста, обратитесь с моего сайта https://ioswisdom.000webhostapp.com/ –

ответ

17

Уроженец Swift путь является использовать 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 без литья в Swift, вы выбрасывая важную информацию о типе.

+0

. Чтобы использовать словарь по-своему, я должен использовать ** PropertyListSerialization ** right –

+1

Не обязательно. Я обновил ответ. – vadian

+0

@vadian Я бы добавил, что для этого требуется 'import Foundation' для работы под собственным' Swift'. – dinesharjani