2011-02-24 98 views

回答

1

我不是很確定你在說什麼,但一般的方法,只要使用一個文件從應用程序的包是它如下複製到文檔目錄:

  1. 檢查(首次啓動,啓動或根據需要)在文檔目錄中存在該文件。

  2. 如果不存在,請將您的包中文件的「安裝」版本複製到文檔目錄中。

在一些示例代碼來講,我已經用我這樣的目的如下的方法:

- (BOOL)copyFromBundle:(NSString *)fileName { 

    BOOL copySucceeded = NO; 

    // Get our document path. 
    NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentPath = [searchPaths objectAtIndex:0]; 

    // Get the full path to our file. 
    NSString *filePath = [documentPath stringByAppendingPathComponent:fileName]; 

    NSLog(@"copyFromBundle - checking for presence of \"%@\"...", fileName); 

    // Get a file manager 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    // Does the database already exist? (If not, copy it from our bundle) 
    if(![fileManager fileExistsAtPath:filePath]) { 

     // Get the bundle location 
     NSString *bundleDBPath = [[NSBundle mainBundle] pathForResource:fileName ofType:nil]; 

     // Copy the DB to our document directory. 
     copySucceeded = [fileManager copyItemAtPath:bundleDBPath 
              toPath:filePath 
               error:nil]; 

     if(!copySucceeded) { 
      NSLog(@"copyFromBundle - Unable to copy \"%@\" to document directory.", fileName); 
     } 
     else { 
      NSLog(@"copyFromBundle - Succesfully copied \"%@\" to document directory.", fileName); 
     } 

    } 
    else { 
     NSLog(@"copyFromBundle - \"%@\" already exists in document directory - ignoring.", fileName); 
    } 

    return copySucceeded; 
} 

這會在你的文檔目錄檢查指定文件的存在和複製如果它尚未存在,則從您的包中獲取該文件。

7

不知道確切的問題是什麼,但這裏是我如何訪問我的應用程序的本地文檔文件夾(這不是您的應用程序使用的存儲源的文檔文件夾,而是應用程序存儲本地資源的文檔文件夾) 例如,在我的應用我把圖片用相機,並將其存儲到應用程序的本地文件夾,而不是設備相機膠捲,所以讓我做這個圖像的數量,在viewWillAppear方法使用:

// create the route of localDocumentsFolder 
NSArray *filePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
//first use the local documents folder 
NSString *docsPath = [NSString stringWithFormat:@"%@/Documents", NSHomeDirectory()]; 
//then use its bundle, indicating its path 
NSString *bundleRoot = [[NSBundle bundleWithPath:docsPath] bundlePath]; 
//then get its content 
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:bundleRoot error:nil]; 
// this counts the total of jpg images contained in the local document folder of the app 
NSArray *onlyJPGs = [dirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.JPG'"]]; 
// in console tell me how many jpg do I have 
NSLog(@"numero de fotos en total: %i", [onlyJPGs count]); 
// --------------- 

如果您想知道文檔文件夾中的內容(您可以在iOS模擬器中實際瀏覽的內容)

通過〜/ YourUserName /庫/ Application Support/iPhone 模擬器/ versioOfSimulator /應用/ appFolder /文件)

你會使用NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];代替。

希望它可以幫助你,隊友!