【发布时间】:2018-03-24 14:37:54
【问题描述】:
有没有办法检测 iCloudDrive 上的文件是否已移至 iCloudDrive 垃圾箱? 我可以检查包含“.Trash”的 URL,但我正在寻找一种官方方法来检索它。
【问题讨论】:
标签: ios objective-c icloud icloud-drive
有没有办法检测 iCloudDrive 上的文件是否已移至 iCloudDrive 垃圾箱? 我可以检查包含“.Trash”的 URL,但我正在寻找一种官方方法来检索它。
【问题讨论】:
标签: ios objective-c icloud icloud-drive
要检测文件/文件夹是否在垃圾箱中,请使用以下代码:
NSURLRelationship relationship;
NSError *error;
[[NSFileManager defaultManager] getRelationship:&relationship ofDirectory:NSTrashDirectory inDomain:0 toItemAtURL:URL error:&error];
if (relationship == NSURLRelationshipContains) {
//file is in trash
}
【讨论】:
error,这意味着如果relationship被预先初始化为零,如果有错误它会给出错误的结果. 2. 它不适用于从 iCloud 文件夹中删除的文件(例如,如果在 Catalina、Desktop 和 Documents 文件夹同步到 iCloud)到~/Library/Mobile Documents/com~apple~CloudDocs/.Trash,因为这样会返回错误(代码=3328“请求的操作无法'未完成,因为该功能不受支持。")
找到了一种很好的检测方法。从 iOS11 开始,以下方法是可能的:
NSURL* fileURL; // any file URL pointing to a file resource
NSURL* trashURL = [NSFileManager.defaultManager URLForDirectory:NSTrashDirectory inDomain:NSUserDomainMask appropriateForURL: fileURL create:NO error:NULL];
if (trashURL && [fileURL.path hasPrefix:trashURL.path])
{
// fileURL is located in the iCloudDrive trash
}
【讨论】:
[NSString stringByResolvingSymlinksInPath]。否则,您可能会使用通过符号链接指向垃圾箱的路径,然后您的检查将无法正常工作。