2016-11-02 82 views
0

我在捆有plist文件的URL,我用它轉換成一個字典:如何加載字典從plist文件

let path = Bundle.main.path(forResource: "myFile", ofType: "plist") 
let dicFromFile = NSDictionary(contentsOfFile:path!) 
myDictionary = dicFromFile as! [String : String] 

但我也希望應用程序以檢查此更新文件,所以我把它放在一個共享網站,所以它有一定的url,像這樣:

https://www.dropbox.com/s/8ri13i2wggaz6/myFile.plist 

那麼,如何讓我的NSDictionary從這個文件的URL讀?

+0

的plist字典應該是'[字符串:任何]'而不是'[字符串:字符串]' –

回答

1

要從遠程URL加載數據使用異步方式和類PropertyListSerialization反序列化屬性清單。

let url = URL(string:"https://www.dropbox.com/s/8ri13i2wggaz6/myFile.plist" 
URLSession.shared.dataTask(with:url) { (data, response, error) in 
    if error != nil { 
     print(error!) 
    } else { 
     do { 
     let dictionary = try PropertyListSerialization.propertyList(from: data!, options: [], format: nil) as! [String:Any] 
     // do something with the dictionary 
     } catch let error as NSError { 
     print(error) 
     } 
    } 
} 

如果屬性列表文件僅包含String值 - 在這個問題假設 - 轉換成[String:String]

+0

一切看起來不錯,但它不起作用,它既不會給我一個錯誤,也不會給我正確的數據 –

-1

OBJ-C

NSMutableDictionary *autos = [[NSMutableDictionary alloc] initWithContentsOfURL: 
           [NSURL urlWithString:@"https://www.dropbox.com/s/8ri13i2wggaz6/myFile.plist"]]; 

迅速

let path = NSURL.init(string: "https://www.dropbox.com/s/8ri13i2wggaz6/myFile.plist") 
     let dicFromFile = let dicFromFile = NSDictionary.init(contentsOf: path as! URL) 
     myDictionary = dicFromFile as! [String : String] 
+0

objc-c代碼與swift相同 – AleyRobotics

+2

**從不**使用同步方法從遠程URL加載數據 – vadian

+0

它似乎正在工作,但它沒有給出'零'值。也許它確實與Dropbox有關,但如果你只是打開鏈接,它確實打開文件 –