这是我的mainAppDelegate.h
:
#import <UIKit/UIKit.h>
@interface mainAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property NSMutableArray *toDoItems;
@end
和我的mainAppDelegate.m
:
#import "mainAppDelegate.h"
@implementation mainAppDelegate
- (void)applicationWillTerminate:(UIApplication *)application
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"toDoItems.plist"];
[self.toDoItems writeToFile:filePath atomically:TRUE];
}
@end
我有另一个文件XYZToDoListViewController.m
,代码为:
#import "XYZToDoListViewController.h"
#import "XYZToDoItem.h"
#import "XYZAddItemViewController.h"
@interface XYZToDoListViewController ()
@property NSMutableArray *toDoItems;
@end
@implementation XYZToDoListViewController
- (IBAction)unwindToList:(UIStoryboardSegue *)segue
{
XYZAddItemViewController *source = [segue sourceViewController];
XYZToDoItem *item = source.toDoItem;
if (item != nil) {
[self.toDoItems addObject:item];
[self.tableView reloadData];
}
}
- (IBAction)clearData:(UIBarButtonItem *)sender;
{
[self.toDoItems removeAllObjects];
[self.tableView reloadData];
}
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.toDoItems = [[NSMutableArray alloc] init];
self.navigationController.view.backgroundColor =
[UIColor colorWithPatternImage:[UIImage imageNamed:@"bg_full.png"]];
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, -35, 0);
}
@end
这至少是我认为相关的。我的基本框架是this tutorial.所遵循的内容所以你可以看到我有一个名为.toDoItems的NSMutableArray。我希望它在退出应用程序时记住列表(不仅仅是最小化它;它已经这样做了。我想我有保存数据的代码,但我用什么来检查文件是否存在,以及是否那么,展示它?
当应用程序恢复时,这会影响我的clearData
方法吗?
答案 0 :(得分:0)
“我该怎么用来检查文件是否存在”
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:your_file_path])
“..如果是的话,显示它?”
请阅读有关UITableView和UITableViewDataSource的信息 https://developer.apple.com/library/ios/documentation/uikit/reference/UITableView_Class/Reference/Reference.html
“当应用程序恢复时,这会影响我的clearData方法吗?”
clearData是一个按钮操作。只有在用户点击时才会调用它 一个按钮。它与应用程序启动/停止无关。
答案 1 :(得分:0)
好像我明白你想要保存你的NSMutableArray甚至在重启你的应用程序之后。 因此,您可以使用此代码将NSMutableArray与NSUserDefaults一起保存。
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaultsPhoneId setObject:yourArray forKey:@"yourKey"];
[defaultsPhoneId synchronize];
这就是你如何取回它
yourArray=[[NSMutableArray alloc]initWithArray:[[NSUserDefaults standardUserDefaults]objectForKey:@"yourKey"]];
但是不要忘记在使用NSUserDefaults保存之前初始化它。 顺便说一句,你可以随时检查yourArray是否加载了
if([yourArray count]==0){
//Your array is empty so you have to call it with @"yourKey". (second codes part)
}