有时,我们app第一次启动,或者每次升级完成后的第一次启动,我们都需要进行一些本地数据的更新。为了达到数据的更新,大多数开发者,会直接强制性从服务器进行数据读取,然后存储到本地。但,这样强制请求,如果数据过大。会导致两点不好的影响:1.第一次启动时,会用掉用户的很多流量。2.第一次启动时,性能的不友好。
为了避免此现象,我们可以在我们的代码中,事先存储一些用户第一次启动时,必须要用到的基础数据。这样用户第一次启动时,就不用再次请求数据。对流量以及性能都有很好的提升。
上代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[YCTools copyAllDefaultConfigFile];
}
+ (void)copyAllDefaultConfigFile
{
NSString *configPlistPath = [kPATH_OF_CACHES stringByAppendingString:kConfigPlistFile];
// 判断本地是否存在此文件
if (![YCTools isExistsFileWithPath:configPlistPath]) {
NSString* configString = [[NSBundle mainBundle] pathForResource:@"config_yidao" ofType:@"plist"];
NSError* error = nil;
[[NSFileManager defaultManager] copyItemAtPath:configString toPath:configPlistPath error:&error];
[YCTools addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:configPlistPath]];
}
}
+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
//assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
DLog(@"%@",URL);
NSError *error = nil;
BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}