【发布时间】:2014-04-21 21:42:44
【问题描述】:
我有一个简单的待办事项列表,我在其中将项目添加到列表中。我想在应用关闭时将这些项目保存到 .plist 文件中,以便在用户重新打开应用时显示。
我目前正在尝试 2 种不同的方法。两者都给了我List successfully saved! 日志条目,但都没有在重新启动时显示文件。
方法一:
在我的mainAppDelegate.m
- (void)applicationWillTerminate:(UIApplication *)application
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
NSString *filePath = [basePath stringByAppendingPathComponent:@"toDoItems.plist"];
NSMutableDictionary *plistdict = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
[plistdict writeToFile:filePath atomically:YES];
if(![self.toDoItems writeToFile:filePath atomically:YES]) {
NSLog(@"List Successfully Saved!");
};
}
在我的XYZToDoListController.m:
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"toDoItems.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:filePath])
方法二:
在我的mainAppDelegate.m:
- (void)applicationWillTerminate:(UIApplication *)application
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"toDoItems.plist"];
if(![self.toDoItems writeToFile:filePath atomically:YES]) {
NSLog(@"List Successfully Saved!");
};
}
在我的XYZToDoListViewController:
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"toDoItems.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:filePath])
{
self.toDoItems = [[NSMutableArray alloc]initWithContentsOfFile:filePath];
NSLog(@"Loading saved list");
} else {
self.toDoItems = [[NSMutableArray alloc] init];
NSLog(@"Empty List");
}
}
我对使用 Objective C 还很陌生,我已经阅读了很多问题和答案,但我似乎无法加载我的 .plist 文件。有人可以通过一个适用于我的情况的好例子来帮助我找出我的代码中出了什么问题吗?
正如我所说,在日志输出中我看到“空列表”方法正在加载,它告诉我“列表已成功保存!”。除此之外的任何调试输出我都不确定如何使用。
谢谢
【问题讨论】:
标签: ios objective-c nsmutablearray plist writetofile