【问题标题】:Data is nil from image string.图像字符串中的数据为零。
【发布时间】:2016-03-31 20:14:24
【问题描述】:

这是我的保存方法:

-(NSString *)saveImage:(UIImage *)image
{
    NSInteger RandomIndex = arc4random() % 1000;
    NSString *randomImageName =[NSString stringWithFormat:@"Image%i.png",RandomIndex];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:randomImageName];
    if ([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]) {
        [[NSFileManager defaultManager] removeItemAtPath:savedImagePath error:nil];
        NSLog(@"file removed from path");
    }
    NSLog(@"Saved Image Path : %@",savedImagePath);
    NSData* imageData = UIImagePNGRepresentation (image);
    [imageData writeToFile:savedImagePath atomically:YES];

    self.teamLogo = savedImagePath;

    return savedImagePath;
}

我尝试加载图像并进行控制:

NSData *myData = [NSData dataWithContentsOfFile:self.team.logo];
    UIImage *selectedImage = [UIImage imageWithData:myData];

self.team.logo 来自 DB。我把绳子放在底座上。在调试模式下,我得到了这个字符串:

/var/mobile/Containers/Data/Application/7CD69EC9-9C20-48EE-B611-FC2353BC31B0/Documents/Image364.png

而 myData 仍然为零。你知道为什么吗?

【问题讨论】:

  • 那里有文件吗?是否包含数据?
  • 是的。我下载了容器,里面是 Image364.png 文件,我可以打开它。看起来不错
  • self.team.logo 是在“重新编译”后检索到的吗?你谈论“DB”,所以我的猜测是路径改变了。您应该只保留 Documents/ 之后的内容,然后使用 NSDocumentDirectory 的东西再次从那里重建它。比如保存两张图片“重新编译”,对比一下/Application//Documents/,你就明白了。
  • 我应该这样做: NSString *string = [[savedImagePath componentsSeparatedByString:@"Documents/"] objectAtIndex:1]; self.teamLogo = 字符串;只是子串,只取 Image364.png 或者我不明白你

标签: ios objective-c uiimage nsdate


【解决方案1】:

从 IOS 8 开始,容器的布局发生了变化。所以不要存储你的数据库的完整路径。相反,只需存储您的图像名称。用于调用图像:

NSString *temp = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"Image364.png"];
NSData *myData = [NSData dataWithContentsOfFile:temp];
UIImage *selectedImage = [UIImage imageWithData:myData];

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2011-09-10
    相关资源
    最近更新 更多