2015-06-25 159 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