1

現在、私は pdf リーダー アプリケーションに取り組んでいます。次のコードを使用して、アプリケーション内に存在するすべての pdf ファイルを読み取ることができます。

NSArray *userDocuments = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSURL *docementsURL = [NSURL fileURLWithPath:[userDocuments lastObject]];
NSArray *documentsURLs = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:docementsURL
                                                       includingPropertiesForKeys:nil
                                                                          options:NSDirectoryEnumerationSkipsHiddenFiles
                                                                            error:nil];

NSMutableArray *names = [NSMutableArray array];
NSMutableDictionary *urls = [NSMutableDictionary dictionary];

NSArray *bundledResources = [[NSBundle mainBundle] URLsForResourcesWithExtension:@"pdf" subdirectory:nil];
documentsURLs = [documentsURLs arrayByAddingObjectsFromArray:bundledResources];

for (NSURL *docURL in documentsURLs)
{
    NSString *title = [[docURL lastPathComponent] stringByDeletingPathExtension];
    [names addObject:title];
    [urls setObject:docURL forKey:title];
}

documents = [[NSArray alloc] initWithArray:[names sortedArrayUsingSelector:@selector(compare:)]];
urlsByName = [[NSDictionary alloc] initWithDictionary:urls];

しかし、私の問題は、pdfファイルフォルダーをフォルダーごとに読み取り、それを個別の配列に保存することです。フォルダー構造は次の画像のようです。

ここに画像の説明を入力

これに関するヘルプをいただければ幸いです..

ここに画像の説明を入力

4

1 に答える 1

0

この目的のために、フォルダーの代わりにバンドルを作成し、その中のすべてのバンドルとファイルを取得できます

このようなもの

NSArray *bundleArr = [[NSBundle mainBundle]pathsForResourcesOfType:@"bundle" inDirectory:nil];
NSLog(@"pdfs in bundle %@ is my class is %@",[bundleArr objectAtIndex:0],[[bundleArr objectAtIndex:0]class]);


for (int i=0; i<[bundleArr count]; i++) {
    NSString *myBundleStr=[bundleArr objectAtIndex:i];
    NSBundle *myBundle = [[NSBundle alloc]initWithPath:[bundleArr objectAtIndex:i]];
    NSArray *pdfPaths = [myBundle pathsForResourcesOfType:@"pdf" inDirectory:nil];
    NSLog(@"\n\nPDF in bundle  is %@",pdfPaths);

}
于 2013-04-11T05:43:03.710 に答える