【问题标题】:iOS check if a file is being writteniOS 检查是否正在写入文件
【发布时间】: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


    【解决方案1】:

    我也遇到了同样的问题。。

    我认为唯一的解决方案是通过设置“文件已修改”的回调来监控目标文件路径,等待一小段时间,如果你没有收到......你知道它是免费且清晰的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      相关资源
      最近更新 更多