【问题标题】:Moving data from bundle to user doc folder not responding accurately将数据从捆绑包移动到用户文档文件夹未准确响应
【发布时间】:2013-06-02 20:54:31
【问题描述】:

我有一个应用程序,其中包含多个应用程序内购买,它还包括一个免费的 mp3,当首先获取应用程序时,我们有他们购买时可以播放的 mp3 列表,如果他们想流式传输它,我们还有一个保存的会话部分,他们可以在其中将其移至离线状态,但仍然可以仅在此处收听,他们可以循环播放并执行其他会产生巨大数据成本的事情。

过程是这样的,我将 mp3 加载到包中,然后在打开保存的会话视图时,它会检查该文件是否存在,如果不存在,则将其从包位置复制到沙箱位置,然后然后正常进行,因此如果它被清除,它将自动从捆绑位置恢复。

问题在于,在保存至少一个其他文件之前,它根本不会重新加载,无论我在应用程序中做什么活动,它只是不会从捆绑包中移入该曲目,直到另一个曲目被移动首先,我重新启动应用程序,然后下次我进入时,我注意到大约一秒钟的轻微延迟,它的所有荣耀都在那里,所以我知道我很接近,但我不知道为什么它最初不会做。

也许有人在这里可以看到我错过了什么,我写代码时已经很晚了,所以无论如何我都会以此为借口,这是我正在使用的代码的 sn-p

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *dataPath = [docDir stringByAppendingPathComponent:@"Sessions"];
NSFileManager *filemgr = [NSFileManager defaultManager];
NSString *freeMp3FilePath = [dataPath stringByAppendingPathComponent:FREEMP3];
// Check if the file already exists
DLog(@"%@",freeMp3FilePath);

if (![filemgr fileExistsAtPath: freeMp3FilePath]){
    DLog(@"File Not Found");
    NSString *freeMP3Address = [[NSBundle mainBundle] pathForResource:@"m-app_0129instantconfidencehd" ofType:@"mp3"];
    if([filemgr copyItemAtPath:freeMP3Address toPath:freeMp3FilePath error:nil]) {
        DLog(@"File Copied");
    } else {
        DLog(@"File Not Copied %@   %@",freeMp3FilePath,freeMP3Address);
    }
}

在日志中,我看到“未找到文件”消息,然后看到“未复制文件”,这两个路径确实显示出来,看起来与此处的预期一样

2013-06-06 10:37:00.092 IMOB[51674:907] <SavedViewController.m:(57)> File Not Found
2013-06-06 10:37:00.097 IMOB[51674:907] <SavedViewController.m:(62)> File Not Copied /var/mobile/Applications/6D5463FF-4106-479A-8E77-16BD24B22CCF/Documents/Sessions/m-app_0129xxxhd.mp3   /var/mobile/Applications/6D5463FF-4106-479A-8E77-16BD24B22CCF/IMOB.app/m-app_0129xxxhd.mp3

此条目显示没有内容在目录中,如果我关闭应用程序并重新启动它也是这种情况

2013-06-06 10:37:00.113 IMOB[51674:907] <SavedViewController.m:(169)> CURRENT ICON ARRAY COUNT :0

好吧,希望这很容易

杰夫

【问题讨论】:

    标签: ios resourcebundle


    【解决方案1】:

    您应该在复制文件时添加了error 参数并检查了它包含的内容...

    在复制文件之前,使用createDirectoryAtPath:withIntermediateDirectories:attributes:error: 确保目标目录存在。

    【讨论】:

    • 好电话我刚刚发现自己的路径是正确的,但我忘记了创建实际目录。今天一大早我忘记了我需要创建它,这就是为什么它在我保存一个之后才起作用,那个例程为我创建了它。告诉你已经很晚了,我打算自己回答,但你打败了我,感谢你花时间提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多