2013-02-21 167 views
0

這是用於從UITextFields(name,addr,contactNumber,email)的內容寫入文件的代碼。NSDocumentDirectory - 寫入並從文件中讀取

NSDictionary *userDict = [NSDictionary dictionaryWithObjectsAndKeys: 
          self.name.text, @"UserName" 
          ,self.address.text, @"UserAddress" 
          ,self.contactNumber.text, @"UserContactNumber" 
          ,self.email.text, @"UserEmail" 
          , nil]; 
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"UserDetails"]; 
BOOL writtenToFile = [userDict writeToFile:fullPath atomically:YES]; 
NSLog(@"writtenToFile: %d",writtenToFile); 

和這一個從文件讀取。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsPath = [paths objectAtIndex:0]; 
NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:documentsPath]; 
for (NSString *path in directoryEnumerator) 
{ 
    NSLog(@"File Names: %@", path); 
    if ([path isEqualToString:@"UserDetails"]) { 
     NSData *data = [NSData dataWithContentsOfFile:path]; 
     NSLog(@"%@",data); 
     NSDictionary *userDict = [[NSDictionary alloc] initWithContentsOfFile:path]; 
     NSLog(@"%@",userDict); 
    } 
} 

但它沒有閱讀任何東西。所有時間它在日誌中打印空。

File Names: UserDetails 
(null) 
(null) 
+0

請包括您的實際日誌。 – occulus 2013-02-21 10:33:01

回答

1

你忘了添加額外'路徑'閱讀

NSString *documentsPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"UserDetails"]; 

編輯

然後當,以dataWithContentsOfFile提供完整路徑:。枚舉將給你的文件的名稱只有

+0

我已經找到了文件&這就是爲什麼它打印在'NSLog'中。仍嘗試過你的路線。對不起,這條線沒有爲我工作。 – 2013-02-21 10:48:30

+0

你只路徑'UserDetails'。如何** dataWithContentsOfFile:**將僅使用該信息搜索文件? – 2013-02-21 10:51:56

+0

你應該提供完整的路徑 – 2013-02-21 10:53:17

0
NSString *path = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] path]; 
//You'll need an additional '/' 
NSString *fullPath = [path stringByAppendingFormat:@"/UserDetails.plist"]; 
BOOL writtenToFile = [userDict writeToFile:fullPath atomically:YES]; 
+0

也試過這個。 *沒有成功*。放置斷點之後,它向我展示了'data - variable不是NSData'和'userDict - nil' – 2013-02-21 10:54:15