![](/img/trans.png)
[英]Swift 3 - Copy Folder w/ contents from Main Bundle to Documents Directory
[英]Copy Folder from main bundle to documents directory in iphone
我有一個應用程序,其中我的主包中有一個名為“Images”的文件夾。
在此文件夾中有另一個名為“Images1”的文件夾,其中包含一些圖像。
當我的應用程序啟動時,我想要文檔目錄中的文件夾“Images”。
我想從文件夾“Images1”中獲取圖像。
但是我無法使用以下代碼將文檔放在文檔目錄的“Images”文件夾中。
編輯
BOOL success1;
NSFileManager *fileManager1 = [NSFileManager defaultManager];
NSError *error1;
NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory1 = [paths1 objectAtIndex:0];
NSString *writableDBPath1 = [documentsDirectory1 stringByAppendingPathComponent:@"Images/Images1"];
success1 = [fileManager fileExistsAtPath:writableDBPath1];
if (success1) return;
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath1 = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Images/Images1"];
NSLog(@"Default : %@",defaultDBPath1);
success1 = [fileManager1 copyItemAtPath:defaultDBPath1 toPath:writableDBPath1 error:&error1];
if (!success1) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error1 localizedDescription]);
}
請幫我。
您確定文件夾樹中有文件嗎?
NSString *defaultDBPath1 = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"/Images/Images1"];
通常當xcode創建一個包時,它會壓縮目錄內容。 因此,首先檢查源文件夾中的所有內容。 即使您看到包瀏覽器中顯示該文件夾,在應用程序中復制時,您將看到圖像位於根文件夾中。 為避免這種情況,當您添加Image文件夾時,在xcode項目中,您可以選中“創建文件夾引用”選項。
但是,由於覆蓋,您的寫入可能會失敗。 在這種情況下,您必須為NSFileManager
給出的NSFileManager
實現委托方法。
- (void) copyFolder {
BOOL success1;
NSFileManager *fileManager1 = [NSFileManager defaultManager];
fileManager1.delegate = self;
NSError *error1;
NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory1 = [paths1 objectAtIndex:0];
NSString *writableDBPath1 = [documentsDirectory1 stringByAppendingPathComponent:@"/Images"];
success1 = [fileManager1 fileExistsAtPath:writableDBPath1];
if (success1 )
{
NSString *defaultDBPath1 = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Images"];
NSLog(@"default path %@",defaultDBPath1);
success1 = [fileManager1 copyItemAtPath:defaultDBPath1 toPath:writableDBPath1 error:&error1];
} else {
if (![[NSFileManager defaultManager] fileExistsAtPath:writableDBPath1])
[[NSFileManager defaultManager] createDirectoryAtPath:writableDBPath1 withIntermediateDirectories:NO attributes:nil error:&error1];
}
}
- (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error copyingItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath{
if ([error code] == 516) //error code for: The operation couldn’t be completed. File exists
return YES;
else
return NO;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.