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

Objective c 在iOS中的O(1)时间内查找具有唯一前缀的文件,objective-c,ios,file-handling,Objective C,Ios,File Handling,在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部分确定,

在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)方法可以获取所需文件的路径,因为只有一个文件具有给定的数字前缀?

为什么不建立一个名称字典,然后在该字典中查找路径?单词键是前缀,值是完整路径

i、 e.:(伪代码)

然后,知道一个前缀后,获取路径既简单又快速(速度的快慢当然取决于使用的dictionnary实现):dictionnary.get(prefix)


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

// 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