2017-04-27 361 views
0

下面是我的方法來保存數據:無法保存數據到PList

self.doctorString = @"Doctor Bob"; 

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsPath = [paths objectAtIndex:0]; 
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"doctorprofile.plist"]; 

NSDictionary *plistDict = [[NSDictionary alloc] initWithObjects: [NSArray arrayWithObjects: self.doctorString, nil] forKeys:[NSArray arrayWithObjects: @"DoctorName", nil]]; 

NSError *error = nil; 
NSData *plistData = [NSPropertyListSerialization dataWithPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 options:0 error:&error]; 

if(plistData){ 
    [plistDict writeToFile:plistPath atomically:YES]; 
    NSLog(@"Data saved successfully"); 
    NSLog(@"Error : %@",error); 

}else{ 
    NSLog(@"Data not happily saved"); 
} 

我的plist結構如下: -

PLIST STRUCTURE

它返回Data saved successfully消息,但是當我在檢查plist文件,它不會保存在那裏。

+0

對'writeToFile:'調用的返回值是什麼? – rmaddy

+0

@rmaddy通向doctorprofile.plist – user1498840

+0

的路徑。不是'YES'或'NO'。檢查'writeToFile:'的返回值。 – rmaddy

回答

0

根據我給出的代碼的讀數,它只會將DoctorName的密鑰寫爲值Doctor Bob。代碼本身沒有錯誤。您可以按照以下方法檢查writeToFile方法的返回值。

BOOL ret = [plistDict writeToFile:plistPath atomically:YES];

如果返回值是將數據寫入到文件的.plist。

+0

返回值是1,但是當我檢查plist文件時,沒有任何變化。 – user1498840

+0

我剛剛運行代碼,它工作正常,並正確地保存在plist文件中的值。您的代碼中必須存在其他問題,請嘗試僅運行此代碼以檢查是否保存該代碼。 –

+0

它會覆蓋我的plist數據還是會追加? – user1498840