plist文件本质是xml,我用着很习惯,以下是从百度云下载plist文件的流程。实际应用,远远不止如此。
首先,在.pch中 #import “AFNetworking.h"
.h文件中需要写入一个数组用以保存:
@property (strong,nonatomic)NSArray *dataArray;
.m文件中:
- (void)viewDidLoad
{
[super viewDidLoad];
//检测是否有.plist这个文件,如果没有则用AFNetworking下载
NSString *Path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [Path stringByAppendingPathComponent:@"part1Data.plist"];
NSFileManager *filemanager = [NSFileManager defaultManager];
if([filemanager fileExistsAtPath:plistPath])
{
NSLog(@"plist已存在");
dataArray = [[NSArray alloc]initWithContentsOfFile:plistPath];
NSLog(@"Plist为%@",dataArray);
}
else
{
//AFNetworking进行下载:
NSString *listUrl = @"http://bcs.duapp.com/XX/XXXX/part1Data.plist";
//这里字符串就是公开-复制链接 的链接 当然,在百度云上要设置为“公开”
NSURL *url = [NSURL URLWithString:listUrl];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *AFHoperation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
AFHoperation.outputStream = [[NSOutputStream alloc]initToFileAtPath:plistPath append:NO];
[AFHoperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{
dataArray = [[NSArray alloc]initWithContentsOfFile:plistPath];
NSLog(@"Plist为%@",dataArray);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@"its make an error");
}
];
[AFHoperation start];
}
}
经测试,这个方法是可以的,拓展的东西呢,就是把百度云当存储服务器,数据都从百度云下载。
显然,在下载之前最好能够判断网络是否连接,导入SystemConfiguration.framework,和Reachability.h/.m,这是苹果官方给的头文件。判断网络的例子:
// 检查网络,如果未连接则提示用户开启链接 或进行下载
Reachability *reachability = [Reachability reachabilityWithHostname:@"www.baidu.com"];
// 测试服务器状态case NotReachable:
NSLog(@"暂无网络!");
break;
case ReachableViaWWAN:
NSLog(@"蜂窝网络开启!");
break;
case ReachableViaWiFi:
NSLog(@"WiFi开启!");
break;
}