今天我有一个读取 plist 站点的应用程序,但它会像这样工作吗:
当您打开应用程序时,它会检查用户是否已经在设备上拥有 plist,以及是否是最新版本。
如果你没有或不是最新版本的服务器捕获
http://lab.vpgroup.com.br/aplicativos/teste-catalogo/lista.plist
我怎么能这样做?
我在 stackoverflow 上看到了很多问题,但没有一个可以满足我的需要。
谢谢
Best Answer-推荐答案 strong>
您永远不想阻止用户界面。下载可能需要很长时间。因此在后台进行。最简单的是使用 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/
|