【问题标题】:NSDocumentDirectory - write to & read from fileNSDocumentDirectory - 写入和读取文件
【发布时间】:2013-02-06 15:25:06
【问题描述】:

这是用于将UITextFields(姓名、地址、联系人号码、电子邮件)的内容写入文件的代码。

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);
    }
}

但它无法读取任何内容。它一直在日志中打印 null。

File Names: UserDetails
(null)
(null)

【问题讨论】:

  • 请包含您的实际日志。

标签: ios objective-c nsdocumentdirectory


【解决方案1】:

您在阅读时忘记添加额外的'Path'

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

编辑

然后,提供 dataWithContentsOfFile: 的完整路径。 Enumerate 只会给你文件名

【讨论】:

  • 我已经找到了该文件,这就是它在NSLog 中打印的原因。还是试了你的线。对不起兄弟这条线对我不起作用。
  • 你的路径只有'UserDetails'。 dataWithContentsOfFile: 如何仅使用该信息搜索文件?
  • 你应该提供完整路径
  • 很棒的家伙.. 它奏效了。将您以前的 cmets 添加到答案中。顺便说一句,我已经接受了你的回答
【解决方案2】:
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];

【讨论】:

  • 也试过了。 没有成功。设置断点后,它显示了data - variable is not NSData & userDict - nil
猜你喜欢
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
  • 2012-03-04
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多