[英]Problems when adding key-value pair to plist file in iOS
我在iPhone應用程序中有一個視圖控制器,該視圖控制器將鍵值對添加到plist文件中。 然后,它將在帶有表視圖的視圖控制器中顯示整個plist。 我遇到的問題是,如果我完全重新啟動應用程序,它將僅顯示iPhone模擬器中的值,並且僅顯示新的鍵值對。
注意:應該將plist文件添加到應用程序的資源目錄UPDATE:下面的代碼是我的問題的解決方案,此外,為了查看plist中的新條目,我實現了一個刷新按鈕,該按鈕基本上在viewDidLoad中運行了該部分。 。
下面是用於添加鍵值對的視圖控制器的代碼:
- (IBAction)addAction:(UIBarButtonItem *)sender
{
NSString *myFile=[[NSBundle mainBundle] pathForResource:@"File" ofType:@"plist"];
dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:myFile];
NSArray *docDir=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *filePath=[docDir objectAtIndex:0];
NSString *plistPath=[filePath stringByAppendingPathComponent:@"File.plist"];
//Check plist's existance using FileManager
NSError *err=nil;
NSFileManager *fManager=[NSFileManager defaultManager];
if(![fManager fileExistsAtPath:plistPath])
{
//file doesn't exist, copy file from bundle to documents directory
NSString *bundlePath=[[NSBundle mainBundle] pathForResource:@"File" ofType:@"plist"];
[fManager copyItemAtPath:bundlePath toPath:plistPath error:&err];
}
//Get the dictionary from the plist's path
dictionary =[[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
//Manipulate the dictionary
[dictionary setObject:textContent forKey:textName];
//Again save in doc directory.
[dictionary writeToFile:plistPath atomically:YES];
}
這是在另一個視圖控制器的表視圖中顯示plist的代碼:
- (void)viewDidLoad
{
[super viewDidLoad];
// Initialize table data
NSArray *docDir=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *filePath=[docDir objectAtIndex:0];
NSString *plistPath=[filePath stringByAppendingPathComponent:@"File.plist"];
dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:**plistPath**];
verses = [dictionary allKeys];
[self.mainTableView reloadData];
}
感謝你的幫助!
在設備上,主捆綁包是只讀的,您要寫入文檔目錄路徑。 你可以通過
NSArray路徑= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
之所以只在啟動時顯示更改,是因為文件名不匹配
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.