应用程序支持目录中的iOS文件或更新后删除的文档目录

时间:2015-02-22 19:36:17

标签: ios objective-c filesystems nsfilemanager

我有一个iOS应用程序,我将一个mp3文件从捆绑包复制到应用程序支持文件夹中的目录(如果我使用Documents文件夹,就会发生同样的事情),以后用户下载更多的mp3文件,它们也存储在那里。一切正常,直到发布更新(或者我在开发期间使用Xcode安装另一个实例),其中应用程序说文件不存在于路径中。我已经尝试了一切,我很难过为什么在使用Xcode进行更新或覆盖安装后,我的文件总是会被删除。

这是我的代码:

//folder being created here
NSString *libraryPath = [[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"Tracks"];

            [[NSFileManager defaultManager] createDirectoryAtPath:libraryPath
                                      withIntermediateDirectories:YES
                                                       attributes:nil
                                                            error:&error];
            if (error != nil) {
                NSLog(@"error creating directory: %@", error);
            }
            //file about to be copied
            NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"Evening-Visualization-vph" ofType:@"mp3"];
            libraryPath = [libraryPath stringByAppendingPathComponent:@"Evening-Visualization-vph.mp3"];

            if(![[NSFileManager defaultManager] copyItemAtPath:sourcePath
                                                       toPath:libraryPath
                                                        error:&error]){
                NSLog(@"Error Copying File from Bundle to Library");
            }
            NSURL * fileURL;
            fileURL = [NSURL fileURLWithPath:libraryPath];
            //file being marked so its not backed up to iCloud
            if (![fileURL setResourceValue:[NSNumber numberWithBool: YES] forKey:NSURLIsExcludedFromBackupKey error:nil]) {
                NSLog(@"Do not backup marked FAILED");
            }

            track.trackLocalPath = libraryPath;

我现在唯一的解决方案是手动检查每次启动是否存在这些路径中的文件并相应地标记我的文件列表DB。

0 个答案:

没有答案