这是我想要实现的目标。1. 搜索所有文件 2. 搜索过程中找到所有 .jpg 文件 3. 将所有 .jpg 文件路径保存到 NSMutableArray
以下是代码:
创建了 NSMutableArray:
NSMutableArray *jpgFiles = [[[NSMutableArray alloc]init]autorelease];
搜索 (/Users/) 路径下的所有父文件夹(在此处启动 NSThread):
NSString* filePath = [url path]; NSArray *dirFiles = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:filePath error:nil]; if([dirFiles count]!=0) { for (int j=0; j<[dirFiles count]; j++) { NSString* pathExtension = [[dirFiles objectAtIndex:j] pathExtension]; //if extension is null, we forwards to next level. if ([pathExtension isEqualTo:@""]) { @autoreleasepool { [NSThread detachNewThreadSelector:@selector(searchingPicture:) toTarget:self withObject:[filePath stringByAppendingPathComponent:[dirFiles objectAtIndex:j]]]; } } else { //if find jpg in this level, save into array if([pathExtension isEqualTo:@"JPG"]) { [jpgFiles addObject:[filePath stringByAppendingPathComponent:[dirFiles objectAtIndex:j]]]; } } } }
继续搜索其余的子文件夹并将正确的文件路径保存到数组中:
-(void)searchingPicture:(NSString*)path { NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease]; NSURL *directoryURL = [NSURL URLWithString:[path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; NSArray *keys = [NSArray arrayWithObject:NSURLIsDirectoryKey]; NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtURL:directoryURL includingPropertiesForKeys:keys options:0 errorHandler:^(NSURL *url, NSError *error) { // Handle the error. // Return YES if the enumeration should continue after the error. return YES; }]; for (NSURL *url in enumerator) { NSError *error; NSNumber *isDirectory = nil; if (! [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:&error]) { // handle error } else if (! [isDirectory boolValue]) { // No error and it’s not a directory; do something with the file if([[[url path] pathExtension]isEqualTo:@"JPG"]) { //This line gives me error !!! [jpgFiles addObject:[url path]]; } } } }
错误:(一开始,它工作正常并将许多不同的文件保存到数组中,但在保存了大约 50 个文件后,它开始给我错误并在最后崩溃)。
这是添加到数组中的正确元素:
/Users/NAME/Documents/Graduate Books/IMG_2517.JPG
这是错误消息:
-[NSPathStore2 addObject:]: unrecognized selector sent to instance 0x10011d4d0
但是,即使发生此错误,它仍然会不断将一些路径保存到数组中,然后会引发另一个错误:
An uncaught exception was raised
大家能告诉我怎么解决吗??谢谢 !!