我有以下代码,它将应用程序包中的文件夹复制到Documents文件夹。
- (void)moveTessdataToDocumentsDirectoryIfNecessary
{
// Useful paths
NSFileManager *fileManager = [NSFileManager defaultManager];
// Create specified folder in the Documents directory first
if ([fileManager fileExistsAtPath:self.dataPath] == NO) {
[fileManager createDirectoryAtPath:self.dataPath withIntermediateDirectories:YES attributes:nil error:nil];
}
NSString *tessdataFolderName = @"tessdata";
NSString *tessdataPath = [[NSBundle bundleForClass:self.class].resourcePath stringByAppendingPathComponent:tessdataFolderName];
NSString *destinationPath = [self.dataPath stringByAppendingPathComponent:tessdataFolderName];
if([fileManager fileExistsAtPath:destinationPath] == NO && [fileManager fileExistsAtPath:tessdataPath]) {
NSError *error = nil;
NSLog(@"found %@", tessdataPath);
NSLog(@"coping in %@", destinationPath);
BOOL res = [fileManager copyItemAtPath:tessdataPath toPath:destinationPath error:&error];
if (!res) {
NSLog(@"The result of copyItemAtPath == NO");
}
if(error != nil) {
NSLog(@"ERROR! %@", error.description);
}
}
}
它在sumilator和设备中工作正常。
当我开始对此功能进行单元测试时,会出现问题。 单元测试时的输出是:
found /Users/kmakankov/Library/Developer/CoreSimulator/Devices/D28F7234-8C28-4325-BE7D-4DF113DF427E/data/Containers/Bundle/Application/EBD5C654-897B-4066-885B-986553D3459F/TestsProject.app/tessdata
coping in /Users/kmakankov/Library/Developer/CoreSimulator/Devices/D28F7234-8C28-4325-BE7D-4DF113DF427E/data/Containers/Data/Application/50D673A6-3F3E-42A1-98A1-DEAF9A4B2FBE/Documents/tes/tessdata
The result of copyItemAtPath == NO
因为你可以看到copyItemAtPath
返回NO,但没有错误信息,所以我无法理解问题的原因是什么。
此外,如果我使用copyItemAtPath
更改moveItemAtPath
,则单元测试期间函数会正确地将文件夹从源移动到目标,因此源路径和目标路径都是正确的。
有人知道copyItemAtPath
有什么问题吗?
一些额外的信息。我使用iOS SDK 8.1。