【问题标题】:Using a remote Plist使用远程 Plist
【发布时间】:2015-08-26 05:55:34
【问题描述】:

我的应用目前使用 Plist 在 TableView 中显示项目。 Plist 位于应用程序的 Bundle 资源中。但现在我希望能够从网络上获取相同的 PList,以便随时更新。

我当前的代码:

func getItems() -> [Dictionary<String, AnyObject>]?{
    if let path = NSBundle.mainBundle().pathForResource("Items", ofType: "plist", 
        let itemsDictionary = NSDictionary(contentsOfFile: path),
        let items = itemsDictionary["biology"] as? [String:AnyObject]
    {
        return items["biology"] as? [Dictionary<String,AnyObject>]
    } else {
        return nil
    }
}

如何实现“可下载”解决方案来检索相同的 Plist?

【问题讨论】:

    标签: ios swift plist


    【解决方案1】:

    假设您的应用程序中没有其他网络需求,那么导入整个依赖项来解决单个问题有点矫枉过正,但是Alamofire 内置了一个 plist 解码器。它就像这样简单:

    Alamofire.request(.GET, "https://yourserver.com").responsePropertyList { (request, response, result, error) in
    
    }
    

    【讨论】:

      【解决方案2】:

      plist 只是 XML,因此解析它的工作方式相同。您只需要使用 NSURLSession 或 NSURlConnection 进行获取。收到响应后,您将使用 NSPropertyListSerialization 将该响应序列化为 NSDictionary。

      这是我发现的一个旧的 Obj-C 应该可以解决问题。将其翻译成 Swift 并不难

      NSURL *url = [NSURLURLWithString:@"http://lab.vpgroup.com.br/aplicativos/teste-catalogo/lista.plist"];
      NSURLRequest *request = [NSURLRequest requestWithURL:url];
      [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response,    NSData *data, NSError *connectionError) {
      NSDictionary *dict = [NSPropertyListSerialization propertyListFromData:data mutabilityOption:0 format:0 errorDescription:nil];
      NSLog(@"%@", dict);
      }]; 
      

      【讨论】:

      • 如果我必须从服务器目录中的远程 plist 获取详细信息怎么办? serverName、serverPort、UDID 和其他一些用户默认值等详细信息在 installprofile.plist 中初始化.. 我想访问它们.. 有没有可能的下载方法?在 xml 中,详细信息作为单独的 配置被提及。请帮忙。
      • 在上面的示例中,我将 plist 序列化为 NSDictionary,因此您应该能够正常访问字典中的 plist 键
      • 问题是 url 在客户端之间不断变化,所以我无法下载 plist,我想从应用程序发送的 plist 中获取服务器名称、服务器端口、udid 和其他详细信息当它从 mdm 服务器推送时。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 2016-07-16
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多