Ios 如何从服务器读取Plist文件并直接使用它而不创建本地文件?

Ios 如何从服务器读取Plist文件并直接使用它而不创建本地文件?,ios,objective-c,swift3,Ios,Objective C,Swift3,我正在做一个项目,我在服务器上有一些设置,我通过Plist文件获得了这些设置,我想在不创建任何本地副本的情况下读取这个Plist文件 需要将此设置存储在字典中,而不是本地Plist文件中 知道我们怎么做吗 样本列表如下所示: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyL

我正在做一个项目,我在服务器上有一些设置,我通过Plist文件获得了这些设置,我想在不创建任何本地副本的情况下读取这个Plist文件

需要将此设置存储在字典中,而不是本地Plist文件中

知道我们怎么做吗

样本列表如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>New item</key>
    <array>
        <dict>
            <key>value</key>
            <string>Data1</string>
            <key>key</key>
            <string>Tab1</string>
        </dict>
        <dict>
            <key>value</key>
            <string>Data2</string>
            <key>key</key>
            <string>Tab2</string>
        </dict>
    </array>
</dict>
</plist>

新项目
价值
数据1
钥匙
表1
价值
数据2
钥匙
表2
如果需要更详细的信息,请告诉我

提前谢谢

您需要使用类从对
字典的响应中解析
数据

let url:URL = URL(string: "")! // URL to fetch plist

let urlSession:URLSession = URLSession(configuration: URLSessionConfiguration.default)

urlSession.dataTask(with: url) { (data:Data?, response:URLResponse?, error:Error?) in

guard let data = data else {
    return
}

let plistDict = try? PropertyListSerialization.propertyList(from: data, options:.mutableContainers, format: nil)

guard let dict = plistDict else {
    print("Error in parsing")
    return
}

print(dict)

}.resume()

这与加载和解析JSON几乎相同。不要使用
JSONSerialization
而使用
PropertyListSerialization

let urlString = "http://server.com/api"

let url = URL(string: urlString)
URLSession.shared.dataTask(with:url!) { (data, response, error) in
  guard error == nil else {
      print(error!)
      return
  } 
  do {         
      let plistDictionary = try PropertyListSerialization.propertyList(from: data!, format: nil) as! [String:Any]
      print(plistDictionary)
  } catch {
      print(error)
  }
}.resume()

看看Objective-C解决方案是的,Objective-C很好,但我们如何在Swift3中实现同样的目标?好的,让我试试。感谢您的快速回答:)