Iphone ApplicationIdentinterBackground-如何保存我的用户数据

Iphone ApplicationIdentinterBackground-如何保存我的用户数据,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,新手的问题 我有一个NotePageAppDelegate和一个NotePageViewController。简单。在我的ViewController中,我定义了一种保存用户数据的方法。如果我在我的应用程序中单击一个按钮调用ViewController中定义的方法saveToDisk,它将非常有效 -(IBAction) saveToDisk { // saves the file to the disk } 如果我点击我的按钮,这将非常有效。但是,如果我关闭应用程序(即在模拟器中单击

新手的问题

我有一个NotePageAppDelegate和一个NotePageViewController。简单。在我的ViewController中,我定义了一种保存用户数据的方法。如果我在我的应用程序中单击一个按钮调用ViewController中定义的方法saveToDisk,它将非常有效

    -(IBAction) saveToDisk
{ // saves the file to the disk
}
如果我点击我的按钮,这将非常有效。但是,如果我关闭应用程序(即在模拟器中单击主页按钮),我会自动保存页面。我认为这是相当直截了当的,所以我把它放在我的AppDelegate中:

- (void)applicationDidEnterBackground:(UIApplication *)application {

    NotePageViewController* controller = [NotePageViewController alloc];

    [controller saveToDisk]; 

    [controller release];

}
然而,这没有任何效果。我忘了定义别的东西了吗?或者,如果我在模拟器中按下Home(主页)按钮,理论上这是否应该起作用


谢谢你的帮助

我很惊讶它没有崩溃,因为您正在对未初始化的实例调用一个方法


您的想法是正确的,但是您应该在已经存在的控制器实例上调用
saveToDisk
,而不是创建一个可能没有用户修改的新实例。

@Anomie:嗯,它不会崩溃。隐马尔可夫模型。。很抱歉为这个问题烦恼,但是控制器的哪个实例已经存在?我怎样才能让它存在?在头文件中?我应该在那里做alloc吗?@n.evermind:你可能已经在屏幕上有一个了,不是吗?这就是你需要的。它可能已经存储为应用程序委托上的属性或类似的内容;没有看到任何代码,我只能猜测。@Anomie:是的,我的屏幕上有一个NotePageViewController.xib。但我猜这不是你的意思。您需要查看代码的哪一部分?AppDelegate header/main或ViewController header/main?@Anomie:这是AppDelegate.h:
#import@class NotePageViewController@接口NotePageAppDelegate:NSObject{UIWindow*窗口;NotePageViewController*viewController;}@property(非原子,保留)IBOutlet UIWindow*窗口@属性(非原子,保留)IBOutlet NotePageViewController*viewController@结束
,这是ViewController。h@n.evermind:否,您将调用
[self.viewController saveToDisk]
。OTOH,如果您可以将其更改为
+(void)saveToDisk
,也可以。