当设备关闭时,如何停止文本字段和拾取的图像消失

时间:2012-05-03 19:40:49

标签: ios xcode singleton photo

如果我的应用程序停止运行或设备已关闭,我的文本字段和从图像选取器中选取的图像全部重置设置为空白,如何保留此信息?

我使用了一个单身人士(在其他成员的帮助下),我可以保留我的形象......直到应用被杀或设备被关闭。然后就消失了。

.m
- (void)viewDidLoad
{
singletonObj = [Singleton sharedSingletonController];
imageView.image = singletonObj.imagePicked;
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{

[self setImageView:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:              (UIInterfaceOrientation)interfaceOrientation
 {
 return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
 }

 #pragma mark - Action





- (IBAction)done:(id)sender
{
[self.delegate flipsideViewControllerDidFinish:self];
}

- (IBAction)btn:(id)sender {



    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;

    if((UIButton *) sender == choosePhotoBtn) {
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    }

    [self presentModalViewController:picker animated:YES];


    }

 -(void)imagePickerController:(UIImagePickerController*)picker   didFinishPickingMediaWithInfo:(NSDictionary*)info

{


NSData  *dataImage = UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"],1);

UIImage *img = [[UIImage alloc] initWithData:dataImage];
singletonObj.imagePicked = img;
imageView.image = img;
[picker dismissModalViewControllerAnimated:YES];



}
@end

2 个答案:

答案 0 :(得分:1)

有两种类型的内存:易失性(RAM)和永久性内存(即:硬盘和其他存储)。

当程序/计算机关闭时,易失性存储器被清除并丢失。

使用单例很好但是它与保持会话到会话的数据完全无关(并且通过会话我的意思是程序运行的时间:从启动到终止应用程序)。

您需要使用您想要的任何方法将要保留的会话数据存储到会话到文件。根据您要存储的信息,有不同的专用保存机制:

  • (例如NSUserDefaults用于用户首选项)。
  • Core Data是一个框架,它定义了构造数据并将其保存/读取到文件(a.k.a。持久存储)的机制。
  • 您也可以使用serialization
  • 或者您可以随时手动操作文件。
  • NSDatawriteToFile:atomically:,它会从数据对象中创建一个文件。如果要保存图像,则必须获取UIImage的基础数据(即:UIImagePNGRepresentation(...))。

答案 1 :(得分:0)

您将不得不使用核心数据。它可以接受来自UIIimage和NSStrings的NSData。必须使用appDelegate,AppicationWillTerminate中的函数,以便在应用程序终止之前存储信息。

这需要一些相当大的工作才能让它正常工作,但没什么太难的。如果您需要帮助了解核心数据,我建议您使用此链接

http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started