请问,基于忽略文件条件过滤原始数据得到的信息是否应该持久化到数据库?

请教一下大家,有一个功能如下:

在项目目录/proj/
下面有很多子目录和文件,
然后我有一个 .gitignore 文件,里面配置了忽略追踪的文件配置。
我想在想要展示未被忽略的文件,我可以Glob模式匹配过滤掉忽略文件得到信息,然后展示。

现在的问题是,
我需要把过滤后得到的信息持久化到数据库吗?第二次打开项目就不必进行重新过滤。
还是说每次打开都过滤之后再展示呢?

阅读 1.1k
1 个回答
// 检查数据库中是否已有缓存数据
- (void)loadFilteredFilesForProject:(NSString *)projectPath completion:(void(^)(NSArray *filteredFiles))completion {
    NSArray *cachedFiles = [self fetchCachedFilesForProject:projectPath];
    if (cachedFiles && ![self isProjectModified:projectPath]) {
        completion(cachedFiles);
    } else {
        [self filterFilesWithGitignoreForProject:projectPath completion:^(NSArray *filteredFiles) {
            [self cacheFiles:filteredFiles forProject:projectPath];
            completion(filteredFiles);
        }];
    }
}

// 过滤文件并持久化
- (void)filterFilesWithGitignoreForProject:(NSString *)projectPath completion:(void(^)(NSArray *filteredFiles))completion {
    // 用 Glob 或其他方式过滤文件
    NSArray *allFiles = [self listAllFilesInProject:projectPath];
    NSArray *gitignorePatterns = [self parseGitignoreForProject:projectPath];
    NSArray *filteredFiles = [self applyGitignorePatterns:gitignorePatterns toFiles:allFiles];
    completion(filteredFiles);
}

// 文件监控示例
- (void)startMonitoringProject:(NSString *)projectPath {
    // 用 FSEvents 或其他机制监控文件变化
    // 一旦检测到变化,调用过滤和缓存更新方法
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏