【发布时间】:2016-06-26 17:55:42
【问题描述】:
我有这个保存 JSON 文件的代码:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
tabController = [self.storyboard instantiateViewControllerWithIdentifier:@"cCustomTabController"];
dValue = [dConfiguration objectForKey:@"Buttons"];
int i = 0;
for (NSString* sProperty in dValue) {
NetworkStatus internetStatus = [_reachabilityInfo currentReachabilityStatus];
NSData *itemData = Nil;
if (internetStatus != NotReachable)
itemData = [util getSpecificJsonData:[sProperty valueForKeyPath:@"Item"]];
if(itemData != nil){
[util saveJSON:itemData withName:[NSString stringWithFormat:@"%@%@",[sProperty valueForKeyPath:@"Item"],[CommonsUtils getCommonUtil].getAppLanguage]];
i++;
}
}
});
假设我使用这个 JSON 来配置我的下一个屏幕,所以在我的包中我已经有一个 JSON 文件以避免该文件不存在,但我总是从服务器更新它以获得可能的最后配置。
我的问题是有时保存或下载文件需要一段时间,而我的下一个屏幕变黑,因为它没有获取文件属性,所以我猜当时正在写入文件。
所以我的问题是,是否有办法知道文件是否正在被写入,或者是否有解决方法来确认文件是否易于读取。
这是我在阅读文件时所做的一个示例:
if (_JsonData == nil) {
NSString *jsonPath = [NSString stringWithFormat:@"%@/%@.json",[NSSearchPathForDirectoriesInDomains (NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0],_JsonConfigFile];
_JsonData = [NSData dataWithContentsOfFile:jsonPath];
}
if (_JsonData != nil) {
dConfiguration =[NSJSONSerialization JSONObjectWithData:_JsonData options:kNilOptions error:nil];
}
编辑 1:
我需要使用队列来加快速度,所以对我的应用程序来说是必要的,事实上我正在将代码更改为此,因为应用程序需要太多时间来获取这些文件,这取决于客户端,但现在其中之一是拉取 7 个配置文件,性能受到 bean 影响。
【问题讨论】:
标签: ios nsfilemanager