OStack程序员社区-中国程序员成长平台

标题: ios - 从服务器下载 plist [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 04:22
标题: ios - 从服务器下载 plist

今天我有一个读取 plist 站点的应用程序,但它会像这样工作吗:

当您打开应用程序时,它会检查用户是否已经在设备上拥有 plist,以及是否是最新版本。

如果你没有或不是最新版本的服务器捕获

http://lab.vpgroup.com.br/aplicativos/teste-catalogo/lista.plist

我怎么能这样做? 我在 stackoverflow 上看到了很多问题,但没有一个可以满足我的需要。

谢谢



Best Answer-推荐答案


您永远不想阻止用户界面。下载可能需要很长时间。因此在后台进行。最简单的是使用 NSURLConnection 的便捷方法 sendAsynchronousRequest:request 顾名思义,它是异步的,在下载完成时调用传递的完成 block

NSURL *url = [NSURL URLWithString"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);
}]; 

示例:

#import <Foundation/Foundation.h>

int main(int argc, char *argv[]) {
    @autoreleasepool {
            NSURL *url = [NSURL URLWithString"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);
            }]; 

            //just for demo
            [[NSRunLoop currentRunLoop] run];
    }
}

关于ios - 从服务器下载 plist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19101179/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4