注册 登录
主题 : 怎么将icloud中的文件下载到沙盒目录中?
级别: 侠客
UID: 609304
精华: 0
发帖: 147
可可豆: 525 CB
威望: 525 点
在线时间: 143(时)
注册时间: 2017-03-22
最后登录: 2018-08-16
0 楼:  发表于: 2018-08-02 23:32    发自: Web Page
来源于 一般提问 分类

怎么将icloud中的文件下载到沙盒目录中?   

如题,想把icloud中的文件下载到沙盒中保存下来
级别: 新手上路
UID: 210362
精华: 0
发帖: 54
可可豆: 154 CB
威望: 144 点
在线时间: 493(时)
注册时间: 2013-02-26
最后登录: 2018-08-17
1 楼:  发表于: 2018-08-03 09:28    发自: Web Page
很简单呀 NSMetadataQuery 百度 Google 一下 很多例子
级别: 侠客
UID: 623940
精华: 0
发帖: 212
可可豆: 378 CB
威望: 378 点
在线时间: 130(时)
注册时间: 2017-09-19
最后登录: 2018-08-17
2 楼:  发表于: 2018-08-03 13:46    发自: Web Page
FileManager.startDownloadingUbiquitousItem(at: url);


级别: 侠客
UID: 609304
精华: 0
发帖: 147
可可豆: 525 CB
威望: 525 点
在线时间: 143(时)
注册时间: 2017-03-22
最后登录: 2018-08-16
3 楼:  发表于: 2018-08-03 22:40    发自: Web Page
回 2楼(409xxxx) 的帖子
本地路径呢?这个方法默认把文件下载到哪里?怎么找到这个文件?
级别: 新手上路
UID: 659185
精华: 0
发帖: 1
可可豆: 1 CB
威望: 1 点
在线时间: 0(时)
注册时间: 2018-08-03
最后登录: 2018-08-03
4 楼:  发表于: 2018-08-03 22:48    发自: Web Page
l1i5karqf9
级别: 新手上路
UID: 659186
精华: 0
发帖: 1
可可豆: 1 CB
威望: 1 点
在线时间: 0(时)
注册时间: 2018-08-03
最后登录: 2018-08-03
5 楼:  发表于: 2018-08-03 23:03    发自: Web Page
mqh84bofv2
级别: 侠客
UID: 623940
精华: 0
发帖: 212
可可豆: 378 CB
威望: 378 点
在线时间: 130(时)
注册时间: 2017-09-19
最后登录: 2018-08-17
6 楼:  发表于: 2018-08-11 00:06    发自: Web Page
回 3楼(sbqios2017) 的帖子
ios的机制是这样的
iCloud上的文件,你可以访问到文件所有的属性,除了实际内容
FileManager.startDownloadingUbiquitousItem(at: url)

作用就是将实际内容下载到ios的硬盘上,下载完毕之后你才可以实际获取到它的内容。也是相当于,下载到icloud目录,并不是沙盒。沙盒需要你自己拷贝或者直接就读取icloud上的文件
级别: 侠客
UID: 609304
精华: 0
发帖: 147
可可豆: 525 CB
威望: 525 点
在线时间: 143(时)
注册时间: 2017-03-22
最后登录: 2018-08-16
7 楼:  发表于: 2018-08-11 09:43    发自: Web Page
回 6楼(409xxxx) 的帖子
谢谢你,我现在遇到的问题是把下载下来的sqlite文件,写入本地的sqlite文件时,老报错,报错提示是sqlite占用,其它类型的文件不存在这个问题。
级别: 侠客
UID: 623940
精华: 0
发帖: 212
可可豆: 378 CB
威望: 378 点
在线时间: 130(时)
注册时间: 2017-09-19
最后登录: 2018-08-17
8 楼:  发表于: 2018-08-12 20:38    发自: Web Page
回 7楼(sbqios2017) 的帖子
这个肯定的,如果你这样做,很可能是在数据库在下载的过程中读取,所以失败。

可以用文件协管类,将文件或者路径进行一个“锁定”,然后完成操作后再让自己的类读取。但是前提是,你下载到本地的时候,你必须要先将数据库文件关闭,然后下载之后再打开。

NSFileCoordinator
级别: 侠客
UID: 623940
精华: 0
发帖: 212
可可豆: 378 CB
威望: 378 点
在线时间: 130(时)
注册时间: 2017-09-19
最后登录: 2018-08-17
9 楼:  发表于: 2018-08-12 20:41    发自: Web Page
另外,你要懂得利用metadataQueryDidUpdate 这个通知,可以很大程度的帮你识别出需要处理的文件,并且哪一些已经实际下载完毕。
当实际下载完毕之后的通知,你再去处理这些文件,会比其他方式更加有效。

NSMetadataQueryUpdateChangedItemsKey
NSMetadataQueryUpdateAddedItemsKey
NSMetadataQueryUpdateRemovedItemsKey

自己搜索下github
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部