簡體   English   中英

在iOS中將鍵值對添加到plist文件時出現問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM