0

我对使用 Plists 和 IOS 还是很陌生。我正在尝试加载记录的表格视图,并且我正在尝试从项目中的文档文件夹加载表格视图。它曾经从捆绑包中加载,然后我指向文档文件夹。我从我的项目中删除了 plist,并将其保存在文档文件夹中,但我收到了一个复制错误:所以,请查看我的代码并告诉我如何从我的应用程序的文档文件夹中加载。我在调试中运行它,它仍然只加载包中 plist 中的 5 条记录,而不是驻留在我的文档文件夹中的 7 条记录。请注意,在加载 tableView 记录的初始屏幕后,我在顶部选择“+”选项来加载空白屏幕以加载另一条记录,我正在写入文档文件夹并且它可以工作,现在我想在 Master 上显示这些更改。我也不确定如何刷新屏幕。我已经阅读了一些关于“ViewDidLoad”的内容,但我不确定如何使用这种方法。先感谢您。

问候,

 NSLog(@"loading data");
    self.navigationItem.title=@"Accounts";
//    NSString *accountFile = [[NSBundle mainBundle] pathForResource:@"Accounts2" ofType:@"plist"];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPath = [paths objectAtIndex:0];
    NSString *plistPath = [documentPath stringByAppendingPathComponent:@"Accounts2.plist"];
    accounts = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    account = [accounts objectForKey:@"Account"];
    number = [accounts objectForKey:@"Number"];
    dueDay = [accounts objectForKey:@"DayDue"];
    minAmount = [accounts objectForKey:@"MinAmount"];
    balance = [accounts objectForKey:@"Balance"];

    NSLog(@"data loaded");
4

1 回答 1

0

第一个常见的东西,没有plist捆绑如何将它们复制到文档目录中。?所以请将您的plist文件保存到 Bundle 中,然后复制到文档目录中,如下面的代码:-

BOOL success;
NSError *error;

NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"yourPlistName.plist"];

success = [fileManager fileExistsAtPath:filePath];
if (success) return;

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingFormat:@"yourPlistName.plist"];
success = [fileManager copyItemAtPath:path toPath:filePath error:&error];

if (!success) {
    NSAssert1(0, @"Failed to copy Plist. Error %@", [error localizedDescription]);
}

您可以使用以下代码行获取此 plist 文件:-

NSString *path = filePath;
NSMutableDictionary *plistdictionary = [[NSMutableDictionary alloc]initWithContentsOfFile:path];

您可以像下面的代码一样直接从资源(NSBundle)获取 plist 文件:-

NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"yourPlistName" ofType:@"plist"];
NSMutableDictionary *plistdictionary = [[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];
于 2013-06-10T05:31:35.977 回答