gpt4 book ai didi

objective-c - 在 iOS 中以 O(1) 时间查找具有唯一前缀的文件

转载 作者:行者123 更新时间:2023-11-29 11:05:49 24 4
gpt4 key购买 nike

在 iPad 应用程序中,我有一个包含以下文件的文件夹:

1-1-xxxx.dat
1-2-xxxx.dat
...
1-999-xxxx.dat
2-1-xxxx.dat
...
...
999-999-xxxx.dat

其中 xxxx 部分是在创建文件时在运行时确定的字符。每个文件的内容都取决于前一个文件的内容,因此对于我创建的每个文件,我都需要查询前一个文件。问题是,我只知道前一个文件的前缀而不是 xxxx 部分,因为 'xxxx' 部分本质上是随机的。 (xxxx 部分本身由前一个文件的xxxx 部分决定,1-1-xxxx 文件是随机命名的)。

要访问该文件,初始方法是:

// For file 1-50-xxxx.dat
NSError *error = nil;
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *allFiles = [fm contentsOfDirectoryAtPath:path error:&error];

for (NSString *file in allFiles) {
if ([file hasPrefix:@"1-49-"]) {
// Determine contents and name of file "1-50-xxxx.dat"
// Create file, break, etc.
}
}
// ... And repeat for many files

这显然很快就会变得非常昂贵。是否有一种 O(1) 的方法来获取所需文件的路径,因为只有一个文件具有给定的数字前缀?

最佳答案

你为什么不建立一个名字的字典,然后在那个字典中查找路径?字典键是前缀,值是完整路径。

即:(伪代码)

// Build the path dictionnary, that is done only once
currentPrefix = ...
previousXXX = null
foreach file
currentXXX = computeXXX( previousXXX )
dictionnary.put( currentPrefix, computePath( currentPrefix, currentXXX )

// Remember for next iteration
previousXXX = currentXXX
currentPrefix++
endforeach

然后,知道一个前缀,就可以轻松快速地获取路径(当然,多快取决于所使用的字典实现):dictionnary.get( prefix )


要构建文件的内容,只需应用相同的逻辑:在每次迭代中,记住前一个文件的内容/后缀并使用它,而不是从头开始重新计算。

关于objective-c - 在 iOS 中以 O(1) 时间查找具有唯一前缀的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com