我有这段代码可以从文件夹中获取所有文件:
- (NSMutableArray*) allFilesAtPath:(NSString *)startPath
{
NSMutableArray* listing = [NSMutableArray array];
NSArray* fileNames = [self contentsOfDirectoryAtPath:startPath error:nil];
if (!fileNames) return listing;
for (NSString* file in fileNames) {
NSString* absPath = [startPath stringByAppendingPathComponent:file];
BOOL isDir = NO;
if ([self fileExistsAtPath:absPath isDirectory:&isDir]) {
[listing addObject:absPath];
if (isDir) [listing addObjectsFromArray:[self allFilesAtPath:absPath]];
}
}
return listing;
}
在一个测试文件夹中,我有一个名为yahoéo.jpg
When NSLogged 的文件,它显示为yahoe\U0301o.jpg
当然,这对于文件名中没有这种强调字符的任何其他文件都适用。
因此,当我尝试使用以下命令从数组中删除它时:
[theFilesArray removeObject:fileName];
fileName 是yahoéo.jpg
它没有被删除,因为它没有在数组中找到。
为什么我有这样的字符替换。我在文档中找不到任何关于此的内容。哪些角色应该受到相同的待遇?我怎么会知道呢?
最重要的是,我该如何获取é
文件名数组中的字符?
编辑
fileName
removeObject 方法中使用的变量是通过从 PList 文件中获取字符串并将其提供给以下方法来构造的:
+ (NSString*) fileNameWithString:(NSString*)str
{
NSString* fileName = str;
NSCharacterSet* charactersToRemove = [NSCharacterSet characterSetWithCharactersInString:@".:/\\"];
fileName = [[fileName componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@"#"];
fileName = [fileName stringByAppendingString:@".jpg"];
return fileName;
}