在应用程序关闭或终止时,将textField中的数据保存到文件中

时间:2015-04-01 17:48:23

标签: ios objective-c iphone file save

在我的应用程序中有一个名为" Home"的视图控制器。使用textField。 我在applicationDidEnterBackground文件中了解了applicationWillTerminateAppDelegate方法。 我知道如何创建,保存,读取文件中的数据。

我的问题是,如何从" NSString"中获取Home。 viewController(那里存储了textField数据)到AppDelegate applicationDidEnterBackground方法并用那些数据做我所有的事情?

2 个答案:

答案 0 :(得分:1)

您可以使用NSNotificationCenter在视图控制器中注册一个通知,只要您输入applicationDidEnterBackground或applicationWillTerminate,就会触发该通知。

因此,在这些方法中,您可以添加类似

的内容
[[NSNotificationCenter defaultCenter] postNotificationName:@"someDescriptiveName" object:self userInfo:@{@"key" : @"value"}];

userInfo需要一个NSDicitonary,你可以在那里传递任何类型的对象,在你的情况下你不需要从这里传递任何东西回到你的viewcontroller,你只是用它来让你的视图控制器知道应用程序正在关闭。

在您的视图控制器中,您将使用类似的内容注册该通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodToCall:) name:@"someDescriptiveName" object:nil]; 

然后每当你的appDelegate发布该通知时,你的视图控制器被注册以监听它会触发“methodToCall”,这可能是你正确做任何事情的方法,它会进行通知,然后让你访问nsdicitonary它的携带。

- (void)methodToCall:(NSNotification *)notif{
NSLog(@"methodToCall fired with data %@",[[notif userInfo]valueForKey:@"key"]);}

答案 1 :(得分:0)

您可以在控制器内部的帮助下完成此操作:

-(id)init
{
    if((self = [super init]))
    {
        [[NSNotificationCenter defaultCenter]   addObserver:self
                                                   selector:@selector(appDidEnterBackground:)
                                                       name:UIApplicationDidEnterBackgroundNotification
                                                     object:[UIApplication sharedApplication]];
    }
    return self;
}

-(void)appDidEnterBackground:(NSNotification *)note {
    NSLog(@"appDidEnterBackground");
}

您也可以使用applicationWillTerminate代替UIApplicationDidEnterBackgroundNotification