2015-06-25 208 views
0

我正在使用Xcode开发iOS应用程序。在其中一个接口实现(比如接口A)中,我正在文档目录下创建文件。我能够从接口A访问它。但是,如果我尝试访问我在接口A中创建的文件,则从另一个接口(称为接口B),我找不到文件。我在界面B中用来访问文件内容的方法如下:在iOS中创建文件和目录

- (void)loadData{ 

if ([[NSFileManager defaultManager] fileExistsAtPath:_appFile]) { 
    NSLog(@"Directory Exists"); 
    _appFile = [_appFile stringByAppendingPathComponent:@"info.txt"]; 
    if ([[NSFileManager defaultManager] fileExistsAtPath:_appFile]) { 

     NSLog(@"File Exists"); 
     NSData *data = [[NSData alloc] initWithContentsOfFile:_appFile]; 

     if (data!=nil) { 
      NSMutableDictionary *dict = (NSMutableDictionary *) 
      [NSKeyedUnarchiver unarchiveObjectWithData:data]; 
      ToDoItem *item = [dict objectForKey:@"0"]; 
      [_toDoItems addObject:item]; 
     } 
     else{ 
      NSLog(@"Data is empty"); 
     } 
    } 
    else{ 
     NSLog(@"File not exists"); 
    } 
} 
else{ 
    NSLog(@"Directory not exists"); 
} 

} 

我收到上述消息“目录不存在”。这个目录与我从接口A引用的目录相同,但不能从接口B访问。谁能告诉我是什么原因。

在此先感谢

回答

1

遵循MVC模式。 写一个类将做所有的东西相关的文件,只是传递文件名到该类和获取文件。 (你的loadData方法会在那里) ,因为如果一个人从一个接口访问,它也必须从另一个接口访问。

0

检查您的_appFile可能为零。

我有这样的方法类似的东西,你可以使用类似这样的要移动到不同的类,只需在自定义NSObject类实施这种方法并调用每次你需要它的时候..

- (BOOL)createWithName:(NSString *)fileName 
{ 
    // make some writing here.. 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    NSString *SearchPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; 

    NSString *FilePath = [SearchPath stringByAppendingPathComponent:fileName]; 

    BOOL createStatus = [fileManager fileExistsAtPath:FilePath]; 

    if (createStatus) 
    { 
     NSLog(@"Log: Created!"); 
    } 
    else 
    { 
     NSLog(@"Log: Failed!"); 
    } 

    return createStatus; 
} 

而这一次与路径搜索文件..

- (BOOL)findFileWithName:(NSString *)fileName inDirectory:(NSString *)directoryPath 
{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    // for staticly assigned directory path 
    // 
    //NSString *searchPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; 
    // 

    NSString *mergedPath = [directoryPath stringByAppendingPathComponent:fileName]; 

    BOOL isAvailable = [fileManager fileExistsAtPath:mergedPath]; 

    if (isAvailable) 
    { 
     NSLog(@"Log: File found"); 
    } 
    else 
    { 
     NSLog(@"Log: No file found"); 
    } 

    return isAvailable; 
} 
+0

你好我使用写我自定义的对象并读该文件。根据你的建议,我无法每次创建文件,当我调用时,这是我最关心的问题 – Chandan