2015-03-31 61 views
0

这应该是超级简单的,但不知何故我无法弄清楚。无法从本地设备中保存的文件加载数据

我有一个图像,我在本地保存在设备中,我使用核心数据来存储文件的保存位置。核心数据不保存文件本身,只是位置。

我做这样的:

- (NSString *) saveFileToLocalFilePath 
{ 
    card_FileName = [NSString stringWithFormat:@"%@_%@.png", 
        self.card_name, 
        self.card_issuer]; 

    NSArray *arrayPaths = 
    NSSearchPathForDirectoriesInDomains(
             NSDocumentDirectory, 
             NSUserDomainMask, 
             YES); 
    NSString *path = [arrayPaths objectAtIndex:0]; 
    path = [path stringByAppendingString:@"/"]; 
    path = [path stringByAppendingString:card_FileName]; 

    [UIImagePNGRepresentation(imageTaken) writeToFile:path atomically:YES]; 

    return path; 
} 

- (void) generateNewCoreDataCardWithFilePath:(NSString *)filePath 
{ 
    Card *card = (Card *) [NSEntityDescription insertNewObjectForEntityForName:@"Card" 
                 inManagedObjectContext:[CoreDataHelper getManagedObjectContext]]; 
    card.card_name = self.card_name; 
    card.card_issuer = self.card_issuer; 
    card.card_type = self.card_type; 
    card.card_image_location = card_FileName; // this should just be the "DefaultCardName_DefaultCardIssuer.png" part 
} 

这则文件保存到这个位置:

/var/mobile/Containers/Data/Application/E02566CA-B992-41AE-9B47-51903448015E/Documents/DefaultCardName_DefaultCardIssuer.png 

我相信这部分作品。我遇到的问题是检索文件。 下面是我在做什么来打开文件:

Card *card = [[self fetchedResultsController]objectAtIndexPath:indexPath]; 

NSArray *arrayPaths = 
NSSearchPathForDirectoriesInDomains(
            NSDocumentDirectory, 
            NSUserDomainMask, 
            YES); 
NSString *path = [arrayPaths objectAtIndex:0]; 
path = [path stringByAppendingString:@"/"]; 
path = [path stringByAppendingString:card.card_image_location]; 

NSData *data = [NSData dataWithContentsOfFile:path]; 

的问题是,数据返回nil每一次。

关于我在做什么的任何建议是错误的? 谢谢!

编辑 得到它通过改变我所说的数据的方式,工作使用:

[NSData dataWithContentsOfFile:filePath] 
+0

*“我相信这部分工作”*,这还不够:检查'writeToFile'的返回值,它会告诉你它是否工作。提供一些调试信息:文件是否实际保存,CoreData是否实际保存了数据,CoreData是否提取数据。所有这些步骤可能会导致您无法读取文件。 – luk2302 2015-03-31 18:10:48

+0

该文件不会被保存,它甚至出现在Xcode中的“devices”部分 – TooManyEduardos 2015-03-31 19:24:20

回答

0

能否请您测试是否文件被实际保存下面的代码?

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; 
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"card.card_image_location"]; 
BOOL fileExists = [fileManager fileExistsAtPath:filePath]; 
+0

如果我将路径组件更改为@“DefaultCardName_DefaultCardIssuer.png”(它是文件名),则响应为yes,因此文件确实存在。 – TooManyEduardos 2015-03-31 19:17:43

相关问题