将图像添加到 NSUserDefaults 和文件夹
Posted
技术标签:
【中文标题】将图像添加到 NSUserDefaults 和文件夹【英文标题】:adding images to NSUserDefaluts and folder 【发布时间】:2014-09-23 12:05:41 【问题描述】:我有一个数据库结构:UserDefaults->Empdata Dictionary->Iphone Array-> 添加的每个员工的字典。 连同其他详细信息,我想保存员工的图像。 Employee 使用 ImagePicker 上传其图像。我也想当所有细节都保存后也可以编辑。我曾想过将所有图像保存在一个文件夹中,并将其图像名称作为员工姓名,然后通过图像名称检索此图像。如果有是其他一些替代品,请告诉我。任何形式的帮助都将是可观的。 提前致谢。
【问题讨论】:
另一种称为 CoreData。 NSUserDefaults 不是数据库,它用于应用设置。 尝试将NSUserDefaults
仅用于小数据值。对于图像,尝试将图像存储在文档目录中。将核心数据用于基于数据库的应用程序是最佳做法。
我是 ios 新手,我不知道该怎么做。我在用户默认值中保存了其他详细信息。如果使用文档目录可以解决我的问题,请建议在我的项目中实现它。
【参考方案1】:
正如大家已经建议的那样,您应该使用应用程序目录来保存和检索图像。
还可以使用员工 ID 等独特的名称来代替员工姓名。
下面的帖子解释了在应用目录中保存和检索的过程。请遵循以下操作:
Saving image to Documents directory and retrieving for email attachment
【讨论】:
【参考方案2】:NSUserDefaults 不打算存储二进制数据或大块数据! 如果图像小于 100KB,您应该将图像保存到磁盘或使用 Core Data 将其存储到磁盘或数据库中。
编辑:
要将图像从 ImagePickerController 保存到磁盘,您可以执行以下操作:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
NSString *imageFilename = [NSString stringWithFormat:@"%@.jpg", yourNameString];
NSString *paths = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString* imagePath = [NSString stringWithFormat:@"%@/%@", paths, imageFilename];
NSLog(@"IMAGE PATH: %@", imagePath);
[self dismissViewControllerAnimated:YES completion:^
NSData *imageData = UIImageJPEGRepresentation(image, 1.0f);
if([imageData writeToFile:imagePath atomically:YES])
NSLog(@"Write to Document folder success filename = %@",imagePath);
];
对于 Core Data,您应该搜索一些教程或书籍,因为它需要学习的内容很多,并且超出了本主题的范围。
【讨论】:
我是 ios 新手,我不知道该怎么做。我在用户默认值中保存了其他详细信息。如果使用文档目录可以解决我的问题,请建议如何在我的项目中实现它。 —— 这会解决我的目的还是我还需要添加其他东西?? 它将解决您的要求。那就是用员工的名字将图像保存到磁盘(参见“yourNameString”)。您还拥有图像的路径,您可以将其添加到包含员工信息的 NSDictionary 中,然后从中检索。以上是关于将图像添加到 NSUserDefaults 和文件夹的主要内容,如果未能解决你的问题,请参考以下文章
Swift 将图像(截图)保存到 nsuserdefaults
如何快速将 NSIndexPath 添加到 NSUserDefaults
如何使用 NSUserDefaults 将项目添加到 NSMutableArray