首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSFileManager,将临时下载的文件移至永久目录的问题

NSFileManager,将临时下载的文件移至永久目录的问题
EN

Stack Overflow用户
提问于 2020-03-22 07:09:53
回答 1查看 30关注 0票数 1

所以我使用Unity提供的一个插件来做后台下载。除了实际存储文件之外,这个插件工作得很好。

我不是iOS开发人员,所以可能是一个新问题,但是为什么这个不起作用呢?我收到一个错误,指出该文件不存在。

我所需要做的就是获取文件,然后将其移动到我的文档中。虽然我有点困惑,但我如何才能让tmp文件成为我的最终文件类型?

https://github.com/Unity-Technologies/BackgroundDownload

代码语言:javascript
复制
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
{
    NSLog(@"Finished Download");
    //NSLog(downloadTask.taskDescription);
    NSLog(location.absoluteString);
    NSFileManager* fileManager;
    NSURL* destUri = GetDestinationUri(downloadTask.taskDescription, &fileManager);
    NSLog(destUri.absoluteString);

    NSError *error;

    Boolean success = [fileManager replaceItemAtURL: destUri withItemAtURL: location backupItemName: nil options: NSFileManagerItemReplacementUsingNewMetadataOnly resultingItemURL: nil error: &error];

    if(success)
    {
        NSLog(@"success");
    }
    else
    {
        NSLog(@"Fail %@", error);
    }

    UnityBackgroundDownload* download = [backgroundDownloads objectForKey: downloadTask];
    download.status = kStatusDone;
}

static NSURL* GetDestinationUri(NSString* dest, NSFileManager** fileManager)
{
    NSFileManager* manager = [NSFileManager defaultManager];
    NSURL* documents = [[manager URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask] lastObject];
    NSURL* destUri = [documents URLByAppendingPathComponent: dest];
    if (fileManager != NULL)
        *fileManager = manager;
    return destUri;
}
EN

Stack Overflow用户

发布于 2020-03-22 07:59:15

最终我自己发现了这个。

GetDestinationURI调用基本上没有意义,因为我已经从Unity端提供了它也需要保存的目录。因此,只需将字符串直接转换为URL,然后使用它。

对其他使用这个插件的人有更多的评论!

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60794280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档