这应该是超级简单的,但不知何故我无法弄清楚。无法从本地设备中保存的文件加载数据
我有一个图像,我在本地保存在设备中,我使用核心数据来存储文件的保存位置。核心数据不保存文件本身,只是位置。
我做这样的:
- (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]
*“我相信这部分工作”*,这还不够:检查'writeToFile'的返回值,它会告诉你它是否工作。提供一些调试信息:文件是否实际保存,CoreData是否实际保存了数据,CoreData是否提取数据。所有这些步骤可能会导致您无法读取文件。 – luk2302 2015-03-31 18:10:48
该文件不会被保存,它甚至出现在Xcode中的“devices”部分 – TooManyEduardos 2015-03-31 19:24:20