【问题标题】:How to read Plist file from server and directly use it without creating local file?如何从服务器读取 Plist 文件并直接使用它而不创建本地文件?
【发布时间】:2017-12-11 08:50:26
【问题描述】:

我正在处理一个项目,我在服务器上进行了一些设置,我通过 Plist 文件获得了这些设置,我想在不创建任何本地副本的情况下读取此 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>

如果需要更多详细信息,请告诉我。

提前致谢!

【问题讨论】:

标签: ios objective-c swift3


【解决方案1】:

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

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

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

【讨论】:

  • 太棒了让我试试看。感谢您的快速回答:)
【解决方案2】:

您需要使用NSPropertyListSerialization 类来解析您的Data 从响应到Dictionary

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-26
    • 2014-01-18
    • 2011-05-30
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    相关资源
    最近更新 更多