2014-12-06 175 views
0

我使用了一箇舊的示例將數據保存到plist.plist來的數據工作正常,但是當我試圖將數據保存到plist中時,它不會更改或編輯.even我不是我的代碼保存數據是 -無法將數據保存到plist

-(void)saveData 
{ 
    // get paths from root direcory 
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
    // get documents path 
    NSString *documentsPath = [paths objectAtIndex:0]; 
    // get the path to our Data/plist file 
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"]; 

    // set the variables to the values in the text fields 
    personName = self.nameEntered.text; 
    phoneNumbers = [[NSMutableArray alloc] initWithCapacity:3]; 
    [phoneNumbers addObject:self.homePhone.text]; 
    [phoneNumbers addObject:self.workPhone.text]; 
    [phoneNumbers addObject:self.cellPhone.text]; 

    // create dictionary with values in UITextFields 
    NSDictionary *plistDict = [NSDictionary dictionaryWithObjects: [NSArray arrayWithObjects: personName, phoneNumbers, nil] forKeys:[NSArray arrayWithObjects: @"Name", @"Phones", nil]]; 

    NSString *error = nil; 
    // create NSData from dictionary 
    NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 errorDescription:&error]; 

    // check is plistData exists 
    if(plistData) 
    { 
    // write plistData to our Data.plist file 
    [plistData writeToFile:plistPath atomically:YES]; 
    } 
    else 
    { 
    NSLog(@"Error in saveData: %@", error); 
    } 
} 

回答

0

你應該只是從字典去文件。它會將它作爲plist保存下來。

NSDictionary *plistDict = [NSDictionary dictionaryWithObjects: [NSArray arrayWithObjects: personName, phoneNumbers, nil] forKeys:[NSArray arrayWithObjects: @"Name", @"Phones", nil]]; 

NSLog(@"Dictionary is %@", plistDict);  
NSLog(@"Saving to %@", plistPath); 

[plistDict writeToFile:plistPath atomically:YES]; 

我假設你的plistPath是合法的。

+0

它不工作檢查創建NSData。 – chaaruu 2014-12-06 08:00:43

+0

你需要更具體。你怎麼知道它不工作?你在模擬或設備上運行這個嗎?我在代碼中添加了一些NSLog。添加並告訴我輸出是什麼。順便說一下,你的聲明「但是當我試圖將數據保存到plist中時不會改變或編輯」是非常難以理解的。 – 2014-12-06 08:04:37

+0

我也在模擬器和設備上測試過它..當我點擊保存按鈕時,我檢查了plist文件。plist文件沒有發生變化。 – chaaruu 2014-12-06 08:14:46

0

你的代碼是完全不錯的。我在我的機器上嘗試了相同的代碼,它的工作正常。如果你仍然面臨着同樣的問題,那麼你可以使用下面的API,並從dictionary

+(NSData *)dataWithPropertyList:(id)plist format:(NSPropertyListFormat)format options:(NSPropertyListWriteOptions)opt error:(out NSError **)error